{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "c3087360",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "# Define the coRNNCell\n",
    "class coRNNCell(nn.Module):\n",
    "    def __init__(self, n_inp, n_hid, dt, gamma, epsilon):\n",
    "        super(coRNNCell, self).__init__()\n",
    "        self.dt = dt\n",
    "        self.gamma = gamma\n",
    "        self.epsilon = epsilon\n",
    "        self.i2h = nn.Linear(n_inp + n_hid + n_hid, n_hid)\n",
    "\n",
    "    def forward(self, x, hy, hz):\n",
    "        hz = hz + self.dt * (torch.tanh(self.i2h(torch.cat((x, hz, hy), 1)))\n",
    "                             - self.gamma * hy - self.epsilon * hz)\n",
    "        hy = hy + self.dt * hz\n",
    "\n",
    "        return hy, hz\n",
    "\n",
    "# Define the coRNN model\n",
    "class coRNN(nn.Module):\n",
    "    def __init__(self, n_inp, n_hid, n_out, dt, gamma, epsilon):\n",
    "        super(coRNN, self).__init__()\n",
    "        self.n_hid = n_hid\n",
    "        self.cell = coRNNCell(n_inp, n_hid, dt, gamma, epsilon)\n",
    "        self.readout = nn.Linear(n_hid, n_out)\n",
    "\n",
    "    def forward(self, x):\n",
    "        hy = torch.zeros(x.size(1), self.n_hid)\n",
    "        hz = torch.zeros(x.size(1), self.n_hid)\n",
    "\n",
    "        for t in range(x.size(0)):\n",
    "            hy, hz = self.cell(x[t], hy, hz)\n",
    "        output = self.readout(hy)\n",
    "\n",
    "        return output\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d5f77619",
   "metadata": {},
   "source": [
    "### PINN data importing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "5d6cfa8b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('burg.mat')\n",
    "\n",
    "# Access the variables stored in the .mat file\n",
    "# The variable names in the .mat file become keys in the loaded dictionary\n",
    "x = mat_data['x']\n",
    "t = mat_data['t']\n",
    "u = mat_data['u1']\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0082d614",
   "metadata": {},
   "source": [
    "### Exact Solution data importing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "10519e4e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x size (256, 1)\n",
      "t size (100, 1)\n",
      "u size (256, 100)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# importing data\n",
    "\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import time\n",
    "import scipy.io\n",
    "\n",
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('burgers_shock.mat')\n",
    "\n",
    "# Access the variables stored in the .mat file\n",
    "# The variable names in the .mat file become keys in the loaded dictionary\n",
    "x = mat_data['x']\n",
    "t = mat_data['t']\n",
    "u_1 = mat_data['usol']\n",
    "\n",
    "#Use the loaded variables as needed\n",
    "print(\"x size\", x.shape)\n",
    "print(\"t size\", t.shape)\n",
    "print(\"u size\", u.shape)\n",
    "\n",
    "X, T = np.meshgrid(x, t)\n",
    "# Define custom color levels\n",
    "c_levels = np.linspace(np.min(u_1), np.max(u_1), 100)\n",
    "\n",
    "# Plot the contour\n",
    "plt.figure(figsize=(15, 5))\n",
    "plt.contourf(T, X, u_1.T, levels=c_levels, cmap='coolwarm')\n",
    "plt.xlabel('t')\n",
    "plt.ylabel('x')\n",
    "plt.title('Burgers')\n",
    "plt.colorbar()  # Add a colorbar for the contour levels\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "08861d5f",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/data/localhome/tkapoor/.local/lib/python3.8/site-packages/torch/nn/modules/loss.py:520: UserWarning: Using a target size (torch.Size([1, 79, 256])) that is different to the input size (torch.Size([79, 256])). This will likely lead to incorrect results due to broadcasting. Please ensure they have the same size.\n",
      "  return F.mse_loss(input, target, reduction=self.reduction)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 10/20000, Loss: 0.41685393\n",
      "Epoch: 20/20000, Loss: 0.40157637\n",
      "Epoch: 30/20000, Loss: 0.38687059\n",
      "Epoch: 40/20000, Loss: 0.37270209\n",
      "Epoch: 50/20000, Loss: 0.35906750\n",
      "Epoch: 60/20000, Loss: 0.34595200\n",
      "Epoch: 70/20000, Loss: 0.33333120\n",
      "Epoch: 80/20000, Loss: 0.32117948\n",
      "Epoch: 90/20000, Loss: 0.30947345\n",
      "Epoch: 100/20000, Loss: 0.29819226\n",
      "Epoch: 110/20000, Loss: 0.28731743\n",
      "Epoch: 120/20000, Loss: 0.27683240\n",
      "Epoch: 130/20000, Loss: 0.26672217\n",
      "Epoch: 140/20000, Loss: 0.25697288\n",
      "Epoch: 150/20000, Loss: 0.24757172\n",
      "Epoch: 160/20000, Loss: 0.23850667\n",
      "Epoch: 170/20000, Loss: 0.22976637\n",
      "Epoch: 180/20000, Loss: 0.22133999\n",
      "Epoch: 190/20000, Loss: 0.21321721\n",
      "Epoch: 200/20000, Loss: 0.20538823\n",
      "Epoch: 210/20000, Loss: 0.19784352\n",
      "Epoch: 220/20000, Loss: 0.19057399\n",
      "Epoch: 230/20000, Loss: 0.18357085\n",
      "Epoch: 240/20000, Loss: 0.17682560\n",
      "Epoch: 250/20000, Loss: 0.17033006\n",
      "Epoch: 260/20000, Loss: 0.16407622\n",
      "Epoch: 270/20000, Loss: 0.15805647\n",
      "Epoch: 280/20000, Loss: 0.15226330\n",
      "Epoch: 290/20000, Loss: 0.14668950\n",
      "Epoch: 300/20000, Loss: 0.14132802\n",
      "Epoch: 310/20000, Loss: 0.13617207\n",
      "Epoch: 320/20000, Loss: 0.13121498\n",
      "Epoch: 330/20000, Loss: 0.12645033\n",
      "Epoch: 340/20000, Loss: 0.12187184\n",
      "Epoch: 350/20000, Loss: 0.11747342\n",
      "Epoch: 360/20000, Loss: 0.11324914\n",
      "Epoch: 370/20000, Loss: 0.10919321\n",
      "Epoch: 380/20000, Loss: 0.10530001\n",
      "Epoch: 390/20000, Loss: 0.10156410\n",
      "Epoch: 400/20000, Loss: 0.09798016\n",
      "Epoch: 410/20000, Loss: 0.09454297\n",
      "Epoch: 420/20000, Loss: 0.09124754\n",
      "Epoch: 430/20000, Loss: 0.08808894\n",
      "Epoch: 440/20000, Loss: 0.08506240\n",
      "Epoch: 450/20000, Loss: 0.08216329\n",
      "Epoch: 460/20000, Loss: 0.07938711\n",
      "Epoch: 470/20000, Loss: 0.07672943\n",
      "Epoch: 480/20000, Loss: 0.07418603\n",
      "Epoch: 490/20000, Loss: 0.07175272\n",
      "Epoch: 500/20000, Loss: 0.06942551\n",
      "Epoch: 510/20000, Loss: 0.06720047\n",
      "Epoch: 520/20000, Loss: 0.06507380\n",
      "Epoch: 530/20000, Loss: 0.06304180\n",
      "Epoch: 540/20000, Loss: 0.06110089\n",
      "Epoch: 550/20000, Loss: 0.05924761\n",
      "Epoch: 560/20000, Loss: 0.05747857\n",
      "Epoch: 570/20000, Loss: 0.05579050\n",
      "Epoch: 580/20000, Loss: 0.05418023\n",
      "Epoch: 590/20000, Loss: 0.05264470\n",
      "Epoch: 600/20000, Loss: 0.05118092\n",
      "Epoch: 610/20000, Loss: 0.04978601\n",
      "Epoch: 620/20000, Loss: 0.04845720\n",
      "Epoch: 630/20000, Loss: 0.04719177\n",
      "Epoch: 640/20000, Loss: 0.04598711\n",
      "Epoch: 650/20000, Loss: 0.04484071\n",
      "Epoch: 660/20000, Loss: 0.04375011\n",
      "Epoch: 670/20000, Loss: 0.04271298\n",
      "Epoch: 680/20000, Loss: 0.04172701\n",
      "Epoch: 690/20000, Loss: 0.04079003\n",
      "Epoch: 700/20000, Loss: 0.03989991\n",
      "Epoch: 710/20000, Loss: 0.03905460\n",
      "Epoch: 720/20000, Loss: 0.03825213\n",
      "Epoch: 730/20000, Loss: 0.03749060\n",
      "Epoch: 740/20000, Loss: 0.03676818\n",
      "Epoch: 750/20000, Loss: 0.03608310\n",
      "Epoch: 760/20000, Loss: 0.03543367\n",
      "Epoch: 770/20000, Loss: 0.03481826\n",
      "Epoch: 780/20000, Loss: 0.03423528\n",
      "Epoch: 790/20000, Loss: 0.03368324\n",
      "Epoch: 800/20000, Loss: 0.03316068\n",
      "Epoch: 810/20000, Loss: 0.03266621\n",
      "Epoch: 820/20000, Loss: 0.03219848\n",
      "Epoch: 830/20000, Loss: 0.03175622\n",
      "Epoch: 840/20000, Loss: 0.03133819\n",
      "Epoch: 850/20000, Loss: 0.03094320\n",
      "Epoch: 860/20000, Loss: 0.03057013\n",
      "Epoch: 870/20000, Loss: 0.03021789\n",
      "Epoch: 880/20000, Loss: 0.02988544\n",
      "Epoch: 890/20000, Loss: 0.02957179\n",
      "Epoch: 900/20000, Loss: 0.02927598\n",
      "Epoch: 910/20000, Loss: 0.02899711\n",
      "Epoch: 920/20000, Loss: 0.02873429\n",
      "Epoch: 930/20000, Loss: 0.02848671\n",
      "Epoch: 940/20000, Loss: 0.02825357\n",
      "Epoch: 950/20000, Loss: 0.02803410\n",
      "Epoch: 960/20000, Loss: 0.02782759\n",
      "Epoch: 970/20000, Loss: 0.02763335\n",
      "Epoch: 980/20000, Loss: 0.02745071\n",
      "Epoch: 990/20000, Loss: 0.02727904\n",
      "Epoch: 1000/20000, Loss: 0.02711776\n",
      "Epoch: 1010/20000, Loss: 0.02696628\n",
      "Epoch: 1020/20000, Loss: 0.02682408\n",
      "Epoch: 1030/20000, Loss: 0.02669063\n",
      "Epoch: 1040/20000, Loss: 0.02656545\n",
      "Epoch: 1050/20000, Loss: 0.02644805\n",
      "Epoch: 1060/20000, Loss: 0.02633802\n",
      "Epoch: 1070/20000, Loss: 0.02623492\n",
      "Epoch: 1080/20000, Loss: 0.02613835\n",
      "Epoch: 1090/20000, Loss: 0.02604794\n",
      "Epoch: 1100/20000, Loss: 0.02596333\n",
      "Epoch: 1110/20000, Loss: 0.02588417\n",
      "Epoch: 1120/20000, Loss: 0.02581015\n",
      "Epoch: 1130/20000, Loss: 0.02574095\n",
      "Epoch: 1140/20000, Loss: 0.02567629\n",
      "Epoch: 1150/20000, Loss: 0.02561590\n",
      "Epoch: 1160/20000, Loss: 0.02555950\n",
      "Epoch: 1170/20000, Loss: 0.02550687\n",
      "Epoch: 1180/20000, Loss: 0.02545776\n",
      "Epoch: 1190/20000, Loss: 0.02541196\n",
      "Epoch: 1200/20000, Loss: 0.02536925\n",
      "Epoch: 1210/20000, Loss: 0.02532946\n",
      "Epoch: 1220/20000, Loss: 0.02529238\n",
      "Epoch: 1230/20000, Loss: 0.02525783\n",
      "Epoch: 1240/20000, Loss: 0.02522566\n",
      "Epoch: 1250/20000, Loss: 0.02519571\n",
      "Epoch: 1260/20000, Loss: 0.02516782\n",
      "Epoch: 1270/20000, Loss: 0.02514184\n",
      "Epoch: 1280/20000, Loss: 0.02511762\n",
      "Epoch: 1290/20000, Loss: 0.02509501\n",
      "Epoch: 1300/20000, Loss: 0.02507380\n",
      "Epoch: 1310/20000, Loss: 0.02505359\n",
      "Epoch: 1320/20000, Loss: 0.02503214\n",
      "Epoch: 1330/20000, Loss: 0.02491937\n",
      "Epoch: 1340/20000, Loss: 0.02468975\n",
      "Epoch: 1350/20000, Loss: 0.02429332\n",
      "Epoch: 1360/20000, Loss: 0.02396245\n",
      "Epoch: 1370/20000, Loss: 0.02369624\n",
      "Epoch: 1380/20000, Loss: 0.02346035\n",
      "Epoch: 1390/20000, Loss: 0.02323751\n",
      "Epoch: 1400/20000, Loss: 0.02301017\n",
      "Epoch: 1410/20000, Loss: 0.02278839\n",
      "Epoch: 1420/20000, Loss: 0.02255920\n",
      "Epoch: 1430/20000, Loss: 0.02232300\n",
      "Epoch: 1440/20000, Loss: 0.02210242\n",
      "Epoch: 1450/20000, Loss: 0.02189947\n",
      "Epoch: 1460/20000, Loss: 0.02170986\n",
      "Epoch: 1470/20000, Loss: 0.02152992\n",
      "Epoch: 1480/20000, Loss: 0.02135732\n",
      "Epoch: 1490/20000, Loss: 0.02119054\n",
      "Epoch: 1500/20000, Loss: 0.02102854\n",
      "Epoch: 1510/20000, Loss: 0.02087054\n",
      "Epoch: 1520/20000, Loss: 0.02071595\n",
      "Epoch: 1530/20000, Loss: 0.02056430\n",
      "Epoch: 1540/20000, Loss: 0.02041518\n",
      "Epoch: 1550/20000, Loss: 0.02026823\n",
      "Epoch: 1560/20000, Loss: 0.02012318\n",
      "Epoch: 1570/20000, Loss: 0.01997975\n",
      "Epoch: 1580/20000, Loss: 0.01983773\n",
      "Epoch: 1590/20000, Loss: 0.01969694\n",
      "Epoch: 1600/20000, Loss: 0.01955723\n",
      "Epoch: 1610/20000, Loss: 0.01941848\n",
      "Epoch: 1620/20000, Loss: 0.01928059\n",
      "Epoch: 1630/20000, Loss: 0.01914349\n",
      "Epoch: 1640/20000, Loss: 0.01900711\n",
      "Epoch: 1650/20000, Loss: 0.01887140\n",
      "Epoch: 1660/20000, Loss: 0.01873634\n",
      "Epoch: 1670/20000, Loss: 0.01860191\n",
      "Epoch: 1680/20000, Loss: 0.01846808\n",
      "Epoch: 1690/20000, Loss: 0.01833485\n",
      "Epoch: 1700/20000, Loss: 0.01820220\n",
      "Epoch: 1710/20000, Loss: 0.01807013\n",
      "Epoch: 1720/20000, Loss: 0.01793867\n",
      "Epoch: 1730/20000, Loss: 0.01780779\n",
      "Epoch: 1740/20000, Loss: 0.01767754\n",
      "Epoch: 1750/20000, Loss: 0.01754791\n",
      "Epoch: 1760/20000, Loss: 0.01741893\n",
      "Epoch: 1770/20000, Loss: 0.01729061\n",
      "Epoch: 1780/20000, Loss: 0.01716296\n",
      "Epoch: 1790/20000, Loss: 0.01703600\n",
      "Epoch: 1800/20000, Loss: 0.01690974\n",
      "Epoch: 1810/20000, Loss: 0.01678419\n",
      "Epoch: 1820/20000, Loss: 0.01665935\n",
      "Epoch: 1830/20000, Loss: 0.01653524\n",
      "Epoch: 1840/20000, Loss: 0.01641187\n",
      "Epoch: 1850/20000, Loss: 0.01628923\n",
      "Epoch: 1860/20000, Loss: 0.01616734\n",
      "Epoch: 1870/20000, Loss: 0.01604620\n",
      "Epoch: 1880/20000, Loss: 0.01592582\n",
      "Epoch: 1890/20000, Loss: 0.01580621\n",
      "Epoch: 1900/20000, Loss: 0.01568739\n",
      "Epoch: 1910/20000, Loss: 0.01556935\n",
      "Epoch: 1920/20000, Loss: 0.01545210\n",
      "Epoch: 1930/20000, Loss: 0.01533567\n",
      "Epoch: 1940/20000, Loss: 0.01522003\n",
      "Epoch: 1950/20000, Loss: 0.01510521\n",
      "Epoch: 1960/20000, Loss: 0.01499121\n",
      "Epoch: 1970/20000, Loss: 0.01487802\n",
      "Epoch: 1980/20000, Loss: 0.01476566\n",
      "Epoch: 1990/20000, Loss: 0.01465411\n",
      "Epoch: 2000/20000, Loss: 0.01454337\n",
      "Epoch: 2010/20000, Loss: 0.01443344\n",
      "Epoch: 2020/20000, Loss: 0.01432432\n",
      "Epoch: 2030/20000, Loss: 0.01421599\n",
      "Epoch: 2040/20000, Loss: 0.01410847\n",
      "Epoch: 2050/20000, Loss: 0.01400173\n",
      "Epoch: 2060/20000, Loss: 0.01389577\n",
      "Epoch: 2070/20000, Loss: 0.01379059\n",
      "Epoch: 2080/20000, Loss: 0.01368619\n",
      "Epoch: 2090/20000, Loss: 0.01358256\n",
      "Epoch: 2100/20000, Loss: 0.01347970\n",
      "Epoch: 2110/20000, Loss: 0.01337762\n",
      "Epoch: 2120/20000, Loss: 0.01327630\n",
      "Epoch: 2130/20000, Loss: 0.01317576\n",
      "Epoch: 2140/20000, Loss: 0.01307599\n",
      "Epoch: 2150/20000, Loss: 0.01297699\n",
      "Epoch: 2160/20000, Loss: 0.01287876\n",
      "Epoch: 2170/20000, Loss: 0.01278131\n",
      "Epoch: 2180/20000, Loss: 0.01268464\n",
      "Epoch: 2190/20000, Loss: 0.01258874\n",
      "Epoch: 2200/20000, Loss: 0.01249363\n",
      "Epoch: 2210/20000, Loss: 0.01239928\n",
      "Epoch: 2220/20000, Loss: 0.01230571\n",
      "Epoch: 2230/20000, Loss: 0.01221291\n",
      "Epoch: 2240/20000, Loss: 0.01212087\n",
      "Epoch: 2250/20000, Loss: 0.01202960\n",
      "Epoch: 2260/20000, Loss: 0.01193909\n",
      "Epoch: 2270/20000, Loss: 0.01184934\n",
      "Epoch: 2280/20000, Loss: 0.01176033\n",
      "Epoch: 2290/20000, Loss: 0.01167207\n",
      "Epoch: 2300/20000, Loss: 0.01158456\n",
      "Epoch: 2310/20000, Loss: 0.01149777\n",
      "Epoch: 2320/20000, Loss: 0.01141172\n",
      "Epoch: 2330/20000, Loss: 0.01132639\n",
      "Epoch: 2340/20000, Loss: 0.01124177\n",
      "Epoch: 2350/20000, Loss: 0.01115786\n",
      "Epoch: 2360/20000, Loss: 0.01107466\n",
      "Epoch: 2370/20000, Loss: 0.01099216\n",
      "Epoch: 2380/20000, Loss: 0.01091034\n",
      "Epoch: 2390/20000, Loss: 0.01082921\n",
      "Epoch: 2400/20000, Loss: 0.01074875\n",
      "Epoch: 2410/20000, Loss: 0.01066897\n",
      "Epoch: 2420/20000, Loss: 0.01058984\n",
      "Epoch: 2430/20000, Loss: 0.01051136\n",
      "Epoch: 2440/20000, Loss: 0.01043352\n",
      "Epoch: 2450/20000, Loss: 0.01035631\n",
      "Epoch: 2460/20000, Loss: 0.01027969\n",
      "Epoch: 2470/20000, Loss: 0.01020364\n",
      "Epoch: 2480/20000, Loss: 0.01012791\n",
      "Epoch: 2490/20000, Loss: 0.01002155\n",
      "Epoch: 2500/20000, Loss: 0.00980889\n",
      "Epoch: 2510/20000, Loss: 0.00969999\n",
      "Epoch: 2520/20000, Loss: 0.00960709\n",
      "Epoch: 2530/20000, Loss: 0.00951768\n",
      "Epoch: 2540/20000, Loss: 0.00935060\n",
      "Epoch: 2550/20000, Loss: 0.00918079\n",
      "Epoch: 2560/20000, Loss: 0.00906890\n",
      "Epoch: 2570/20000, Loss: 0.00896663\n",
      "Epoch: 2580/20000, Loss: 0.00886819\n",
      "Epoch: 2590/20000, Loss: 0.00877194\n",
      "Epoch: 2600/20000, Loss: 0.00867750\n",
      "Epoch: 2610/20000, Loss: 0.00858469\n",
      "Epoch: 2620/20000, Loss: 0.00849341\n",
      "Epoch: 2630/20000, Loss: 0.00840355\n",
      "Epoch: 2640/20000, Loss: 0.00831460\n",
      "Epoch: 2650/20000, Loss: 0.00814700\n",
      "Epoch: 2660/20000, Loss: 0.00800072\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 2670/20000, Loss: 0.00789336\n",
      "Epoch: 2680/20000, Loss: 0.00779427\n",
      "Epoch: 2690/20000, Loss: 0.00769763\n",
      "Epoch: 2700/20000, Loss: 0.00760270\n",
      "Epoch: 2710/20000, Loss: 0.00750932\n",
      "Epoch: 2720/20000, Loss: 0.00741740\n",
      "Epoch: 2730/20000, Loss: 0.00732692\n",
      "Epoch: 2740/20000, Loss: 0.00723787\n",
      "Epoch: 2750/20000, Loss: 0.00715027\n",
      "Epoch: 2760/20000, Loss: 0.00706409\n",
      "Epoch: 2770/20000, Loss: 0.00697927\n",
      "Epoch: 2780/20000, Loss: 0.00689384\n",
      "Epoch: 2790/20000, Loss: 0.00672811\n",
      "Epoch: 2800/20000, Loss: 0.00661003\n",
      "Epoch: 2810/20000, Loss: 0.00651586\n",
      "Epoch: 2820/20000, Loss: 0.00638959\n",
      "Epoch: 2830/20000, Loss: 0.00625624\n",
      "Epoch: 2840/20000, Loss: 0.00615392\n",
      "Epoch: 2850/20000, Loss: 0.00605782\n",
      "Epoch: 2860/20000, Loss: 0.00596461\n",
      "Epoch: 2870/20000, Loss: 0.00587385\n",
      "Epoch: 2880/20000, Loss: 0.00578543\n",
      "Epoch: 2890/20000, Loss: 0.00569742\n",
      "Epoch: 2900/20000, Loss: 0.00557741\n",
      "Epoch: 2910/20000, Loss: 0.00547631\n",
      "Epoch: 2920/20000, Loss: 0.00538604\n",
      "Epoch: 2930/20000, Loss: 0.00529805\n",
      "Epoch: 2940/20000, Loss: 0.00521194\n",
      "Epoch: 2950/20000, Loss: 0.00512754\n",
      "Epoch: 2960/20000, Loss: 0.00504462\n",
      "Epoch: 2970/20000, Loss: 0.00496308\n",
      "Epoch: 2980/20000, Loss: 0.00488278\n",
      "Epoch: 2990/20000, Loss: 0.00480317\n",
      "Epoch: 3000/20000, Loss: 0.00470726\n",
      "Epoch: 3010/20000, Loss: 0.00460895\n",
      "Epoch: 3020/20000, Loss: 0.00452325\n",
      "Epoch: 3030/20000, Loss: 0.00443276\n",
      "Epoch: 3040/20000, Loss: 0.00434571\n",
      "Epoch: 3050/20000, Loss: 0.00426273\n",
      "Epoch: 3060/20000, Loss: 0.00418158\n",
      "Epoch: 3070/20000, Loss: 0.00410212\n",
      "Epoch: 3080/20000, Loss: 0.00402438\n",
      "Epoch: 3090/20000, Loss: 0.00394842\n",
      "Epoch: 3100/20000, Loss: 0.00387429\n",
      "Epoch: 3110/20000, Loss: 0.00380202\n",
      "Epoch: 3120/20000, Loss: 0.00373162\n",
      "Epoch: 3130/20000, Loss: 0.00366311\n",
      "Epoch: 3140/20000, Loss: 0.00359647\n",
      "Epoch: 3150/20000, Loss: 0.00353167\n",
      "Epoch: 3160/20000, Loss: 0.00346870\n",
      "Epoch: 3170/20000, Loss: 0.00340751\n",
      "Epoch: 3180/20000, Loss: 0.00334805\n",
      "Epoch: 3190/20000, Loss: 0.00329026\n",
      "Epoch: 3200/20000, Loss: 0.00323410\n",
      "Epoch: 3210/20000, Loss: 0.00317949\n",
      "Epoch: 3220/20000, Loss: 0.00312638\n",
      "Epoch: 3230/20000, Loss: 0.00307471\n",
      "Epoch: 3240/20000, Loss: 0.00302441\n",
      "Epoch: 3250/20000, Loss: 0.00297543\n",
      "Epoch: 3260/20000, Loss: 0.00292770\n",
      "Epoch: 3270/20000, Loss: 0.00288118\n",
      "Epoch: 3280/20000, Loss: 0.00283581\n",
      "Epoch: 3290/20000, Loss: 0.00279155\n",
      "Epoch: 3300/20000, Loss: 0.00274836\n",
      "Epoch: 3310/20000, Loss: 0.00270620\n",
      "Epoch: 3320/20000, Loss: 0.00266504\n",
      "Epoch: 3330/20000, Loss: 0.00262485\n",
      "Epoch: 3340/20000, Loss: 0.00258559\n",
      "Epoch: 3350/20000, Loss: 0.00254724\n",
      "Epoch: 3360/20000, Loss: 0.00250977\n",
      "Epoch: 3370/20000, Loss: 0.00247316\n",
      "Epoch: 3380/20000, Loss: 0.00243737\n",
      "Epoch: 3390/20000, Loss: 0.00240238\n",
      "Epoch: 3400/20000, Loss: 0.00236816\n",
      "Epoch: 3410/20000, Loss: 0.00233469\n",
      "Epoch: 3420/20000, Loss: 0.00230193\n",
      "Epoch: 3430/20000, Loss: 0.00226987\n",
      "Epoch: 3440/20000, Loss: 0.00223847\n",
      "Epoch: 3450/20000, Loss: 0.00220771\n",
      "Epoch: 3460/20000, Loss: 0.00217757\n",
      "Epoch: 3470/20000, Loss: 0.00214802\n",
      "Epoch: 3480/20000, Loss: 0.00211905\n",
      "Epoch: 3490/20000, Loss: 0.00209063\n",
      "Epoch: 3500/20000, Loss: 0.00206275\n",
      "Epoch: 3510/20000, Loss: 0.00203539\n",
      "Epoch: 3520/20000, Loss: 0.00200855\n",
      "Epoch: 3530/20000, Loss: 0.00198221\n",
      "Epoch: 3540/20000, Loss: 0.00195637\n",
      "Epoch: 3550/20000, Loss: 0.00193102\n",
      "Epoch: 3560/20000, Loss: 0.00190614\n",
      "Epoch: 3570/20000, Loss: 0.00188174\n",
      "Epoch: 3580/20000, Loss: 0.00185779\n",
      "Epoch: 3590/20000, Loss: 0.00183431\n",
      "Epoch: 3600/20000, Loss: 0.00181127\n",
      "Epoch: 3610/20000, Loss: 0.00178867\n",
      "Epoch: 3620/20000, Loss: 0.00176649\n",
      "Epoch: 3630/20000, Loss: 0.00174474\n",
      "Epoch: 3640/20000, Loss: 0.00172340\n",
      "Epoch: 3650/20000, Loss: 0.00170246\n",
      "Epoch: 3660/20000, Loss: 0.00168191\n",
      "Epoch: 3670/20000, Loss: 0.00166174\n",
      "Epoch: 3680/20000, Loss: 0.00164195\n",
      "Epoch: 3690/20000, Loss: 0.00162252\n",
      "Epoch: 3700/20000, Loss: 0.00160345\n",
      "Epoch: 3710/20000, Loss: 0.00158473\n",
      "Epoch: 3720/20000, Loss: 0.00156634\n",
      "Epoch: 3730/20000, Loss: 0.00154828\n",
      "Epoch: 3740/20000, Loss: 0.00153055\n",
      "Epoch: 3750/20000, Loss: 0.00151313\n",
      "Epoch: 3760/20000, Loss: 0.00149602\n",
      "Epoch: 3770/20000, Loss: 0.00147920\n",
      "Epoch: 3780/20000, Loss: 0.00146268\n",
      "Epoch: 3790/20000, Loss: 0.00144644\n",
      "Epoch: 3800/20000, Loss: 0.00143047\n",
      "Epoch: 3810/20000, Loss: 0.00141478\n",
      "Epoch: 3820/20000, Loss: 0.00139935\n",
      "Epoch: 3830/20000, Loss: 0.00138418\n",
      "Epoch: 3840/20000, Loss: 0.00136926\n",
      "Epoch: 3850/20000, Loss: 0.00135459\n",
      "Epoch: 3860/20000, Loss: 0.00134015\n",
      "Epoch: 3870/20000, Loss: 0.00132595\n",
      "Epoch: 3880/20000, Loss: 0.00131198\n",
      "Epoch: 3890/20000, Loss: 0.00129823\n",
      "Epoch: 3900/20000, Loss: 0.00128469\n",
      "Epoch: 3910/20000, Loss: 0.00127137\n",
      "Epoch: 3920/20000, Loss: 0.00125826\n",
      "Epoch: 3930/20000, Loss: 0.00124535\n",
      "Epoch: 3940/20000, Loss: 0.00123264\n",
      "Epoch: 3950/20000, Loss: 0.00122012\n",
      "Epoch: 3960/20000, Loss: 0.00120779\n",
      "Epoch: 3970/20000, Loss: 0.00119564\n",
      "Epoch: 3980/20000, Loss: 0.00118368\n",
      "Epoch: 3990/20000, Loss: 0.00117189\n",
      "Epoch: 4000/20000, Loss: 0.00116028\n",
      "Epoch: 4010/20000, Loss: 0.00114883\n",
      "Epoch: 4020/20000, Loss: 0.00113756\n",
      "Epoch: 4030/20000, Loss: 0.00112644\n",
      "Epoch: 4040/20000, Loss: 0.00111548\n",
      "Epoch: 4050/20000, Loss: 0.00110467\n",
      "Epoch: 4060/20000, Loss: 0.00109402\n",
      "Epoch: 4070/20000, Loss: 0.00108351\n",
      "Epoch: 4080/20000, Loss: 0.00107315\n",
      "Epoch: 4090/20000, Loss: 0.00106294\n",
      "Epoch: 4100/20000, Loss: 0.00105286\n",
      "Epoch: 4110/20000, Loss: 0.00104291\n",
      "Epoch: 4120/20000, Loss: 0.00103310\n",
      "Epoch: 4130/20000, Loss: 0.00102342\n",
      "Epoch: 4140/20000, Loss: 0.00101387\n",
      "Epoch: 4150/20000, Loss: 0.00100444\n",
      "Epoch: 4160/20000, Loss: 0.00099513\n",
      "Epoch: 4170/20000, Loss: 0.00098595\n",
      "Epoch: 4180/20000, Loss: 0.00097688\n",
      "Epoch: 4190/20000, Loss: 0.00096792\n",
      "Epoch: 4200/20000, Loss: 0.00095908\n",
      "Epoch: 4210/20000, Loss: 0.00095035\n",
      "Epoch: 4220/20000, Loss: 0.00094173\n",
      "Epoch: 4230/20000, Loss: 0.00093321\n",
      "Epoch: 4240/20000, Loss: 0.00092480\n",
      "Epoch: 4250/20000, Loss: 0.00091649\n",
      "Epoch: 4260/20000, Loss: 0.00090827\n",
      "Epoch: 4270/20000, Loss: 0.00090016\n",
      "Epoch: 4280/20000, Loss: 0.00089214\n",
      "Epoch: 4290/20000, Loss: 0.00088421\n",
      "Epoch: 4300/20000, Loss: 0.00087638\n",
      "Epoch: 4310/20000, Loss: 0.00086864\n",
      "Epoch: 4320/20000, Loss: 0.00086098\n",
      "Epoch: 4330/20000, Loss: 0.00085342\n",
      "Epoch: 4340/20000, Loss: 0.00084593\n",
      "Epoch: 4350/20000, Loss: 0.00083854\n",
      "Epoch: 4360/20000, Loss: 0.00083122\n",
      "Epoch: 4370/20000, Loss: 0.00082398\n",
      "Epoch: 4380/20000, Loss: 0.00081682\n",
      "Epoch: 4390/20000, Loss: 0.00080974\n",
      "Epoch: 4400/20000, Loss: 0.00080274\n",
      "Epoch: 4410/20000, Loss: 0.00079581\n",
      "Epoch: 4420/20000, Loss: 0.00078895\n",
      "Epoch: 4430/20000, Loss: 0.00078217\n",
      "Epoch: 4440/20000, Loss: 0.00077545\n",
      "Epoch: 4450/20000, Loss: 0.00076881\n",
      "Epoch: 4460/20000, Loss: 0.00076223\n",
      "Epoch: 4470/20000, Loss: 0.00075572\n",
      "Epoch: 4480/20000, Loss: 0.00074928\n",
      "Epoch: 4490/20000, Loss: 0.00074290\n",
      "Epoch: 4500/20000, Loss: 0.00073658\n",
      "Epoch: 4510/20000, Loss: 0.00073033\n",
      "Epoch: 4520/20000, Loss: 0.00072414\n",
      "Epoch: 4530/20000, Loss: 0.00071800\n",
      "Epoch: 4540/20000, Loss: 0.00071193\n",
      "Epoch: 4550/20000, Loss: 0.00070592\n",
      "Epoch: 4560/20000, Loss: 0.00069996\n",
      "Epoch: 4570/20000, Loss: 0.00069406\n",
      "Epoch: 4580/20000, Loss: 0.00068821\n",
      "Epoch: 4590/20000, Loss: 0.00068242\n",
      "Epoch: 4600/20000, Loss: 0.00067669\n",
      "Epoch: 4610/20000, Loss: 0.00067100\n",
      "Epoch: 4620/20000, Loss: 0.00066537\n",
      "Epoch: 4630/20000, Loss: 0.00065979\n",
      "Epoch: 4640/20000, Loss: 0.00065426\n",
      "Epoch: 4650/20000, Loss: 0.00064878\n",
      "Epoch: 4660/20000, Loss: 0.00064335\n",
      "Epoch: 4670/20000, Loss: 0.00063797\n",
      "Epoch: 4680/20000, Loss: 0.00063264\n",
      "Epoch: 4690/20000, Loss: 0.00062735\n",
      "Epoch: 4700/20000, Loss: 0.00062211\n",
      "Epoch: 4710/20000, Loss: 0.00061691\n",
      "Epoch: 4720/20000, Loss: 0.00061176\n",
      "Epoch: 4730/20000, Loss: 0.00060666\n",
      "Epoch: 4740/20000, Loss: 0.00060160\n",
      "Epoch: 4750/20000, Loss: 0.00059658\n",
      "Epoch: 4760/20000, Loss: 0.00059160\n",
      "Epoch: 4770/20000, Loss: 0.00058667\n",
      "Epoch: 4780/20000, Loss: 0.00058178\n",
      "Epoch: 4790/20000, Loss: 0.00057693\n",
      "Epoch: 4800/20000, Loss: 0.00057212\n",
      "Epoch: 4810/20000, Loss: 0.00056735\n",
      "Epoch: 4820/20000, Loss: 0.00056262\n",
      "Epoch: 4830/20000, Loss: 0.00055793\n",
      "Epoch: 4840/20000, Loss: 0.00055327\n",
      "Epoch: 4850/20000, Loss: 0.00054866\n",
      "Epoch: 4860/20000, Loss: 0.00054408\n",
      "Epoch: 4870/20000, Loss: 0.00053954\n",
      "Epoch: 4880/20000, Loss: 0.00053504\n",
      "Epoch: 4890/20000, Loss: 0.00053057\n",
      "Epoch: 4900/20000, Loss: 0.00052614\n",
      "Epoch: 4910/20000, Loss: 0.00052175\n",
      "Epoch: 4920/20000, Loss: 0.00051739\n",
      "Epoch: 4930/20000, Loss: 0.00051306\n",
      "Epoch: 4940/20000, Loss: 0.00050877\n",
      "Epoch: 4950/20000, Loss: 0.00050452\n",
      "Epoch: 4960/20000, Loss: 0.00050030\n",
      "Epoch: 4970/20000, Loss: 0.00049611\n",
      "Epoch: 4980/20000, Loss: 0.00049195\n",
      "Epoch: 4990/20000, Loss: 0.00048783\n",
      "Epoch: 5000/20000, Loss: 0.00048374\n",
      "Epoch: 5010/20000, Loss: 0.00047968\n",
      "Epoch: 5020/20000, Loss: 0.00047565\n",
      "Epoch: 5030/20000, Loss: 0.00047165\n",
      "Epoch: 5040/20000, Loss: 0.00046769\n",
      "Epoch: 5050/20000, Loss: 0.00046375\n",
      "Epoch: 5060/20000, Loss: 0.00045985\n",
      "Epoch: 5070/20000, Loss: 0.00045598\n",
      "Epoch: 5080/20000, Loss: 0.00045213\n",
      "Epoch: 5090/20000, Loss: 0.00044832\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 5100/20000, Loss: 0.00044453\n",
      "Epoch: 5110/20000, Loss: 0.00044078\n",
      "Epoch: 5120/20000, Loss: 0.00043705\n",
      "Epoch: 5130/20000, Loss: 0.00043335\n",
      "Epoch: 5140/20000, Loss: 0.00042968\n",
      "Epoch: 5150/20000, Loss: 0.00042604\n",
      "Epoch: 5160/20000, Loss: 0.00042243\n",
      "Epoch: 5170/20000, Loss: 0.00041884\n",
      "Epoch: 5180/20000, Loss: 0.00041528\n",
      "Epoch: 5190/20000, Loss: 0.00041175\n",
      "Epoch: 5200/20000, Loss: 0.00040825\n",
      "Epoch: 5210/20000, Loss: 0.00040477\n",
      "Epoch: 5220/20000, Loss: 0.00040132\n",
      "Epoch: 5230/20000, Loss: 0.00039789\n",
      "Epoch: 5240/20000, Loss: 0.00039449\n",
      "Epoch: 5250/20000, Loss: 0.00039112\n",
      "Epoch: 5260/20000, Loss: 0.00038777\n",
      "Epoch: 5270/20000, Loss: 0.00038445\n",
      "Epoch: 5280/20000, Loss: 0.00038115\n",
      "Epoch: 5290/20000, Loss: 0.00037788\n",
      "Epoch: 5300/20000, Loss: 0.00037464\n",
      "Epoch: 5310/20000, Loss: 0.00037141\n",
      "Epoch: 5320/20000, Loss: 0.00036822\n",
      "Epoch: 5330/20000, Loss: 0.00036504\n",
      "Epoch: 5340/20000, Loss: 0.00036189\n",
      "Epoch: 5350/20000, Loss: 0.00035877\n",
      "Epoch: 5360/20000, Loss: 0.00035567\n",
      "Epoch: 5370/20000, Loss: 0.00035259\n",
      "Epoch: 5380/20000, Loss: 0.00034954\n",
      "Epoch: 5390/20000, Loss: 0.00034650\n",
      "Epoch: 5400/20000, Loss: 0.00034350\n",
      "Epoch: 5410/20000, Loss: 0.00034051\n",
      "Epoch: 5420/20000, Loss: 0.00033755\n",
      "Epoch: 5430/20000, Loss: 0.00033461\n",
      "Epoch: 5440/20000, Loss: 0.00033170\n",
      "Epoch: 5450/20000, Loss: 0.00032880\n",
      "Epoch: 5460/20000, Loss: 0.00032593\n",
      "Epoch: 5470/20000, Loss: 0.00032308\n",
      "Epoch: 5480/20000, Loss: 0.00032025\n",
      "Epoch: 5490/20000, Loss: 0.00031745\n",
      "Epoch: 5500/20000, Loss: 0.00031466\n",
      "Epoch: 5510/20000, Loss: 0.00031190\n",
      "Epoch: 5520/20000, Loss: 0.00030916\n",
      "Epoch: 5530/20000, Loss: 0.00030644\n",
      "Epoch: 5540/20000, Loss: 0.00030374\n",
      "Epoch: 5550/20000, Loss: 0.00030106\n",
      "Epoch: 5560/20000, Loss: 0.00029840\n",
      "Epoch: 5570/20000, Loss: 0.00029577\n",
      "Epoch: 5580/20000, Loss: 0.00029315\n",
      "Epoch: 5590/20000, Loss: 0.00029056\n",
      "Epoch: 5600/20000, Loss: 0.00028798\n",
      "Epoch: 5610/20000, Loss: 0.00028543\n",
      "Epoch: 5620/20000, Loss: 0.00028289\n",
      "Epoch: 5630/20000, Loss: 0.00028037\n",
      "Epoch: 5640/20000, Loss: 0.00027788\n",
      "Epoch: 5650/20000, Loss: 0.00027540\n",
      "Epoch: 5660/20000, Loss: 0.00027295\n",
      "Epoch: 5670/20000, Loss: 0.00027051\n",
      "Epoch: 5680/20000, Loss: 0.00026809\n",
      "Epoch: 5690/20000, Loss: 0.00026569\n",
      "Epoch: 5700/20000, Loss: 0.00026331\n",
      "Epoch: 5710/20000, Loss: 0.00026095\n",
      "Epoch: 5720/20000, Loss: 0.00025861\n",
      "Epoch: 5730/20000, Loss: 0.00025629\n",
      "Epoch: 5740/20000, Loss: 0.00025399\n",
      "Epoch: 5750/20000, Loss: 0.00025170\n",
      "Epoch: 5760/20000, Loss: 0.00024943\n",
      "Epoch: 5770/20000, Loss: 0.00024718\n",
      "Epoch: 5780/20000, Loss: 0.00024495\n",
      "Epoch: 5790/20000, Loss: 0.00024274\n",
      "Epoch: 5800/20000, Loss: 0.00024054\n",
      "Epoch: 5810/20000, Loss: 0.00023836\n",
      "Epoch: 5820/20000, Loss: 0.00023620\n",
      "Epoch: 5830/20000, Loss: 0.00023406\n",
      "Epoch: 5840/20000, Loss: 0.00023193\n",
      "Epoch: 5850/20000, Loss: 0.00022982\n",
      "Epoch: 5860/20000, Loss: 0.00022773\n",
      "Epoch: 5870/20000, Loss: 0.00022566\n",
      "Epoch: 5880/20000, Loss: 0.00022360\n",
      "Epoch: 5890/20000, Loss: 0.00022156\n",
      "Epoch: 5900/20000, Loss: 0.00021954\n",
      "Epoch: 5910/20000, Loss: 0.00021753\n",
      "Epoch: 5920/20000, Loss: 0.00021554\n",
      "Epoch: 5930/20000, Loss: 0.00021356\n",
      "Epoch: 5940/20000, Loss: 0.00021160\n",
      "Epoch: 5950/20000, Loss: 0.00020966\n",
      "Epoch: 5960/20000, Loss: 0.00020773\n",
      "Epoch: 5970/20000, Loss: 0.00020582\n",
      "Epoch: 5980/20000, Loss: 0.00020393\n",
      "Epoch: 5990/20000, Loss: 0.00020205\n",
      "Epoch: 6000/20000, Loss: 0.00020018\n",
      "Epoch: 6010/20000, Loss: 0.00019833\n",
      "Epoch: 6020/20000, Loss: 0.00019650\n",
      "Epoch: 6030/20000, Loss: 0.00019468\n",
      "Epoch: 6040/20000, Loss: 0.00019287\n",
      "Epoch: 6050/20000, Loss: 0.00019108\n",
      "Epoch: 6060/20000, Loss: 0.00018930\n",
      "Epoch: 6070/20000, Loss: 0.00018754\n",
      "Epoch: 6080/20000, Loss: 0.00018579\n",
      "Epoch: 6090/20000, Loss: 0.00018406\n",
      "Epoch: 6100/20000, Loss: 0.00018234\n",
      "Epoch: 6110/20000, Loss: 0.00018064\n",
      "Epoch: 6120/20000, Loss: 0.00017894\n",
      "Epoch: 6130/20000, Loss: 0.00017727\n",
      "Epoch: 6140/20000, Loss: 0.00017560\n",
      "Epoch: 6150/20000, Loss: 0.00017398\n",
      "Epoch: 6160/20000, Loss: 0.00017233\n",
      "Epoch: 6170/20000, Loss: 0.00017069\n",
      "Epoch: 6180/20000, Loss: 0.00016909\n",
      "Epoch: 6190/20000, Loss: 0.00016749\n",
      "Epoch: 6200/20000, Loss: 0.00016591\n",
      "Epoch: 6210/20000, Loss: 0.00016434\n",
      "Epoch: 6220/20000, Loss: 0.00016278\n",
      "Epoch: 6230/20000, Loss: 0.00016124\n",
      "Epoch: 6240/20000, Loss: 0.00015971\n",
      "Epoch: 6250/20000, Loss: 0.00015820\n",
      "Epoch: 6260/20000, Loss: 0.00015669\n",
      "Epoch: 6270/20000, Loss: 0.00015520\n",
      "Epoch: 6280/20000, Loss: 0.00015372\n",
      "Epoch: 6290/20000, Loss: 0.00015226\n",
      "Epoch: 6300/20000, Loss: 0.00015080\n",
      "Epoch: 6310/20000, Loss: 0.00014936\n",
      "Epoch: 6320/20000, Loss: 0.00014793\n",
      "Epoch: 6330/20000, Loss: 0.00014653\n",
      "Epoch: 6340/20000, Loss: 0.00014512\n",
      "Epoch: 6350/20000, Loss: 0.00014372\n",
      "Epoch: 6360/20000, Loss: 0.00014235\n",
      "Epoch: 6370/20000, Loss: 0.00014098\n",
      "Epoch: 6380/20000, Loss: 0.00013963\n",
      "Epoch: 6390/20000, Loss: 0.00013828\n",
      "Epoch: 6400/20000, Loss: 0.00013695\n",
      "Epoch: 6410/20000, Loss: 0.00013563\n",
      "Epoch: 6420/20000, Loss: 0.00013433\n",
      "Epoch: 6430/20000, Loss: 0.00013303\n",
      "Epoch: 6440/20000, Loss: 0.00013174\n",
      "Epoch: 6450/20000, Loss: 0.00013047\n",
      "Epoch: 6460/20000, Loss: 0.00012921\n",
      "Epoch: 6470/20000, Loss: 0.00012796\n",
      "Epoch: 6480/20000, Loss: 0.00012672\n",
      "Epoch: 6490/20000, Loss: 0.00012549\n",
      "Epoch: 6500/20000, Loss: 0.00012427\n",
      "Epoch: 6510/20000, Loss: 0.00012307\n",
      "Epoch: 6520/20000, Loss: 0.00012190\n",
      "Epoch: 6530/20000, Loss: 0.00012070\n",
      "Epoch: 6540/20000, Loss: 0.00011951\n",
      "Epoch: 6550/20000, Loss: 0.00011835\n",
      "Epoch: 6560/20000, Loss: 0.00011720\n",
      "Epoch: 6570/20000, Loss: 0.00011606\n",
      "Epoch: 6580/20000, Loss: 0.00011493\n",
      "Epoch: 6590/20000, Loss: 0.00011380\n",
      "Epoch: 6600/20000, Loss: 0.00011269\n",
      "Epoch: 6610/20000, Loss: 0.00011159\n",
      "Epoch: 6620/20000, Loss: 0.00011050\n",
      "Epoch: 6630/20000, Loss: 0.00010942\n",
      "Epoch: 6640/20000, Loss: 0.00010835\n",
      "Epoch: 6650/20000, Loss: 0.00010729\n",
      "Epoch: 6660/20000, Loss: 0.00010624\n",
      "Epoch: 6670/20000, Loss: 0.00010520\n",
      "Epoch: 6680/20000, Loss: 0.00010417\n",
      "Epoch: 6690/20000, Loss: 0.00010314\n",
      "Epoch: 6700/20000, Loss: 0.00010213\n",
      "Epoch: 6710/20000, Loss: 0.00010113\n",
      "Epoch: 6720/20000, Loss: 0.00010013\n",
      "Epoch: 6730/20000, Loss: 0.00009918\n",
      "Epoch: 6740/20000, Loss: 0.00009819\n",
      "Epoch: 6750/20000, Loss: 0.00009721\n",
      "Epoch: 6760/20000, Loss: 0.00009625\n",
      "Epoch: 6770/20000, Loss: 0.00009530\n",
      "Epoch: 6780/20000, Loss: 0.00009436\n",
      "Epoch: 6790/20000, Loss: 0.00009343\n",
      "Epoch: 6800/20000, Loss: 0.00009251\n",
      "Epoch: 6810/20000, Loss: 0.00009160\n",
      "Epoch: 6820/20000, Loss: 0.00009070\n",
      "Epoch: 6830/20000, Loss: 0.00008980\n",
      "Epoch: 6840/20000, Loss: 0.00008892\n",
      "Epoch: 6850/20000, Loss: 0.00008804\n",
      "Epoch: 6860/20000, Loss: 0.00008717\n",
      "Epoch: 6870/20000, Loss: 0.00008631\n",
      "Epoch: 6880/20000, Loss: 0.00008545\n",
      "Epoch: 6890/20000, Loss: 0.00008461\n",
      "Epoch: 6900/20000, Loss: 0.00008377\n",
      "Epoch: 6910/20000, Loss: 0.00008295\n",
      "Epoch: 6920/20000, Loss: 0.00008213\n",
      "Epoch: 6930/20000, Loss: 0.00008131\n",
      "Epoch: 6940/20000, Loss: 0.00008050\n",
      "Epoch: 6950/20000, Loss: 0.00007970\n",
      "Epoch: 6960/20000, Loss: 0.00007891\n",
      "Epoch: 6970/20000, Loss: 0.00007813\n",
      "Epoch: 6980/20000, Loss: 0.00007736\n",
      "Epoch: 6990/20000, Loss: 0.00007659\n",
      "Epoch: 7000/20000, Loss: 0.00007583\n",
      "Epoch: 7010/20000, Loss: 0.00007508\n",
      "Epoch: 7020/20000, Loss: 0.00007433\n",
      "Epoch: 7030/20000, Loss: 0.00007360\n",
      "Epoch: 7040/20000, Loss: 0.00007287\n",
      "Epoch: 7050/20000, Loss: 0.00007214\n",
      "Epoch: 7060/20000, Loss: 0.00007143\n",
      "Epoch: 7070/20000, Loss: 0.00007072\n",
      "Epoch: 7080/20000, Loss: 0.00007002\n",
      "Epoch: 7090/20000, Loss: 0.00006937\n",
      "Epoch: 7100/20000, Loss: 0.00006864\n",
      "Epoch: 7110/20000, Loss: 0.00006795\n",
      "Epoch: 7120/20000, Loss: 0.00006728\n",
      "Epoch: 7130/20000, Loss: 0.00006661\n",
      "Epoch: 7140/20000, Loss: 0.00006594\n",
      "Epoch: 7150/20000, Loss: 0.00006529\n",
      "Epoch: 7160/20000, Loss: 0.00006464\n",
      "Epoch: 7170/20000, Loss: 0.00006400\n",
      "Epoch: 7180/20000, Loss: 0.00006336\n",
      "Epoch: 7190/20000, Loss: 0.00006273\n",
      "Epoch: 7200/20000, Loss: 0.00006211\n",
      "Epoch: 7210/20000, Loss: 0.00006149\n",
      "Epoch: 7220/20000, Loss: 0.00006088\n",
      "Epoch: 7230/20000, Loss: 0.00006027\n",
      "Epoch: 7240/20000, Loss: 0.00005967\n",
      "Epoch: 7250/20000, Loss: 0.00005908\n",
      "Epoch: 7260/20000, Loss: 0.00005849\n",
      "Epoch: 7270/20000, Loss: 0.00005792\n",
      "Epoch: 7280/20000, Loss: 0.00005734\n",
      "Epoch: 7290/20000, Loss: 0.00005678\n",
      "Epoch: 7300/20000, Loss: 0.00005620\n",
      "Epoch: 7310/20000, Loss: 0.00005564\n",
      "Epoch: 7320/20000, Loss: 0.00005509\n",
      "Epoch: 7330/20000, Loss: 0.00005454\n",
      "Epoch: 7340/20000, Loss: 0.00005400\n",
      "Epoch: 7350/20000, Loss: 0.00005346\n",
      "Epoch: 7360/20000, Loss: 0.00005293\n",
      "Epoch: 7370/20000, Loss: 0.00005240\n",
      "Epoch: 7380/20000, Loss: 0.00005188\n",
      "Epoch: 7390/20000, Loss: 0.00005136\n",
      "Epoch: 7400/20000, Loss: 0.00005085\n",
      "Epoch: 7410/20000, Loss: 0.00005034\n",
      "Epoch: 7420/20000, Loss: 0.00004984\n",
      "Epoch: 7430/20000, Loss: 0.00004935\n",
      "Epoch: 7440/20000, Loss: 0.00004885\n",
      "Epoch: 7450/20000, Loss: 0.00004837\n",
      "Epoch: 7460/20000, Loss: 0.00004788\n",
      "Epoch: 7470/20000, Loss: 0.00004741\n",
      "Epoch: 7480/20000, Loss: 0.00004693\n",
      "Epoch: 7490/20000, Loss: 0.00004647\n",
      "Epoch: 7500/20000, Loss: 0.00004602\n",
      "Epoch: 7510/20000, Loss: 0.00004555\n",
      "Epoch: 7520/20000, Loss: 0.00004509\n",
      "Epoch: 7530/20000, Loss: 0.00004464\n",
      "Epoch: 7540/20000, Loss: 0.00004419\n",
      "Epoch: 7550/20000, Loss: 0.00004375\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 7560/20000, Loss: 0.00004332\n",
      "Epoch: 7570/20000, Loss: 0.00004288\n",
      "Epoch: 7580/20000, Loss: 0.00004245\n",
      "Epoch: 7590/20000, Loss: 0.00004203\n",
      "Epoch: 7600/20000, Loss: 0.00004161\n",
      "Epoch: 7610/20000, Loss: 0.00004119\n",
      "Epoch: 7620/20000, Loss: 0.00004078\n",
      "Epoch: 7630/20000, Loss: 0.00004037\n",
      "Epoch: 7640/20000, Loss: 0.00003997\n",
      "Epoch: 7650/20000, Loss: 0.00003957\n",
      "Epoch: 7660/20000, Loss: 0.00003917\n",
      "Epoch: 7670/20000, Loss: 0.00003878\n",
      "Epoch: 7680/20000, Loss: 0.00003839\n",
      "Epoch: 7690/20000, Loss: 0.00003801\n",
      "Epoch: 7700/20000, Loss: 0.00003768\n",
      "Epoch: 7710/20000, Loss: 0.00003726\n",
      "Epoch: 7720/20000, Loss: 0.00003687\n",
      "Epoch: 7730/20000, Loss: 0.00003651\n",
      "Epoch: 7740/20000, Loss: 0.00003614\n",
      "Epoch: 7750/20000, Loss: 0.00003577\n",
      "Epoch: 7760/20000, Loss: 0.00003541\n",
      "Epoch: 7770/20000, Loss: 0.00003506\n",
      "Epoch: 7780/20000, Loss: 0.00003471\n",
      "Epoch: 7790/20000, Loss: 0.00003436\n",
      "Epoch: 7800/20000, Loss: 0.00003401\n",
      "Epoch: 7810/20000, Loss: 0.00003367\n",
      "Epoch: 7820/20000, Loss: 0.00003333\n",
      "Epoch: 7830/20000, Loss: 0.00003299\n",
      "Epoch: 7840/20000, Loss: 0.00003266\n",
      "Epoch: 7850/20000, Loss: 0.00003233\n",
      "Epoch: 7860/20000, Loss: 0.00003201\n",
      "Epoch: 7870/20000, Loss: 0.00003168\n",
      "Epoch: 7880/20000, Loss: 0.00003137\n",
      "Epoch: 7890/20000, Loss: 0.00003106\n",
      "Epoch: 7900/20000, Loss: 0.00003073\n",
      "Epoch: 7910/20000, Loss: 0.00003043\n",
      "Epoch: 7920/20000, Loss: 0.00003012\n",
      "Epoch: 7930/20000, Loss: 0.00002981\n",
      "Epoch: 7940/20000, Loss: 0.00002951\n",
      "Epoch: 7950/20000, Loss: 0.00002921\n",
      "Epoch: 7960/20000, Loss: 0.00002892\n",
      "Epoch: 7970/20000, Loss: 0.00002862\n",
      "Epoch: 7980/20000, Loss: 0.00002833\n",
      "Epoch: 7990/20000, Loss: 0.00002805\n",
      "Epoch: 8000/20000, Loss: 0.00002776\n",
      "Epoch: 8010/20000, Loss: 0.00002748\n",
      "Epoch: 8020/20000, Loss: 0.00002720\n",
      "Epoch: 8030/20000, Loss: 0.00002693\n",
      "Epoch: 8040/20000, Loss: 0.00002665\n",
      "Epoch: 8050/20000, Loss: 0.00002639\n",
      "Epoch: 8060/20000, Loss: 0.00002616\n",
      "Epoch: 8070/20000, Loss: 0.00002588\n",
      "Epoch: 8080/20000, Loss: 0.00002559\n",
      "Epoch: 8090/20000, Loss: 0.00002533\n",
      "Epoch: 8100/20000, Loss: 0.00002507\n",
      "Epoch: 8110/20000, Loss: 0.00002482\n",
      "Epoch: 8120/20000, Loss: 0.00002457\n",
      "Epoch: 8130/20000, Loss: 0.00002432\n",
      "Epoch: 8140/20000, Loss: 0.00002407\n",
      "Epoch: 8150/20000, Loss: 0.00002383\n",
      "Epoch: 8160/20000, Loss: 0.00002358\n",
      "Epoch: 8170/20000, Loss: 0.00002334\n",
      "Epoch: 8180/20000, Loss: 0.00002311\n",
      "Epoch: 8190/20000, Loss: 0.00002287\n",
      "Epoch: 8200/20000, Loss: 0.00002264\n",
      "Epoch: 8210/20000, Loss: 0.00002241\n",
      "Epoch: 8220/20000, Loss: 0.00002218\n",
      "Epoch: 8230/20000, Loss: 0.00002195\n",
      "Epoch: 8240/20000, Loss: 0.00002173\n",
      "Epoch: 8250/20000, Loss: 0.00002151\n",
      "Epoch: 8260/20000, Loss: 0.00002129\n",
      "Epoch: 8270/20000, Loss: 0.00002112\n",
      "Epoch: 8280/20000, Loss: 0.00002089\n",
      "Epoch: 8290/20000, Loss: 0.00002064\n",
      "Epoch: 8300/20000, Loss: 0.00002044\n",
      "Epoch: 8310/20000, Loss: 0.00002022\n",
      "Epoch: 8320/20000, Loss: 0.00002002\n",
      "Epoch: 8330/20000, Loss: 0.00001981\n",
      "Epoch: 8340/20000, Loss: 0.00001961\n",
      "Epoch: 8350/20000, Loss: 0.00001941\n",
      "Epoch: 8360/20000, Loss: 0.00001921\n",
      "Epoch: 8370/20000, Loss: 0.00001902\n",
      "Epoch: 8380/20000, Loss: 0.00001882\n",
      "Epoch: 8390/20000, Loss: 0.00001863\n",
      "Epoch: 8400/20000, Loss: 0.00001844\n",
      "Epoch: 8410/20000, Loss: 0.00001825\n",
      "Epoch: 8420/20000, Loss: 0.00001806\n",
      "Epoch: 8430/20000, Loss: 0.00001788\n",
      "Epoch: 8440/20000, Loss: 0.00001770\n",
      "Epoch: 8450/20000, Loss: 0.00001752\n",
      "Epoch: 8460/20000, Loss: 0.00001734\n",
      "Epoch: 8470/20000, Loss: 0.00001720\n",
      "Epoch: 8480/20000, Loss: 0.00001701\n",
      "Epoch: 8490/20000, Loss: 0.00001681\n",
      "Epoch: 8500/20000, Loss: 0.00001664\n",
      "Epoch: 8510/20000, Loss: 0.00001647\n",
      "Epoch: 8520/20000, Loss: 0.00001630\n",
      "Epoch: 8530/20000, Loss: 0.00001613\n",
      "Epoch: 8540/20000, Loss: 0.00001597\n",
      "Epoch: 8550/20000, Loss: 0.00001580\n",
      "Epoch: 8560/20000, Loss: 0.00001564\n",
      "Epoch: 8570/20000, Loss: 0.00001548\n",
      "Epoch: 8580/20000, Loss: 0.00001532\n",
      "Epoch: 8590/20000, Loss: 0.00001516\n",
      "Epoch: 8600/20000, Loss: 0.00001501\n",
      "Epoch: 8610/20000, Loss: 0.00001485\n",
      "Epoch: 8620/20000, Loss: 0.00001470\n",
      "Epoch: 8630/20000, Loss: 0.00001455\n",
      "Epoch: 8640/20000, Loss: 0.00001440\n",
      "Epoch: 8650/20000, Loss: 0.00001425\n",
      "Epoch: 8660/20000, Loss: 0.00001412\n",
      "Epoch: 8670/20000, Loss: 0.00001397\n",
      "Epoch: 8680/20000, Loss: 0.00001384\n",
      "Epoch: 8690/20000, Loss: 0.00001368\n",
      "Epoch: 8700/20000, Loss: 0.00001354\n",
      "Epoch: 8710/20000, Loss: 0.00001340\n",
      "Epoch: 8720/20000, Loss: 0.00001326\n",
      "Epoch: 8730/20000, Loss: 0.00001313\n",
      "Epoch: 8740/20000, Loss: 0.00001299\n",
      "Epoch: 8750/20000, Loss: 0.00001286\n",
      "Epoch: 8760/20000, Loss: 0.00001273\n",
      "Epoch: 8770/20000, Loss: 0.00001260\n",
      "Epoch: 8780/20000, Loss: 0.00001247\n",
      "Epoch: 8790/20000, Loss: 0.00001234\n",
      "Epoch: 8800/20000, Loss: 0.00001221\n",
      "Epoch: 8810/20000, Loss: 0.00001209\n",
      "Epoch: 8820/20000, Loss: 0.00001196\n",
      "Epoch: 8830/20000, Loss: 0.00001184\n",
      "Epoch: 8840/20000, Loss: 0.00001172\n",
      "Epoch: 8850/20000, Loss: 0.00001160\n",
      "Epoch: 8860/20000, Loss: 0.00001148\n",
      "Epoch: 8870/20000, Loss: 0.00001142\n",
      "Epoch: 8880/20000, Loss: 0.00001124\n",
      "Epoch: 8890/20000, Loss: 0.00001113\n",
      "Epoch: 8900/20000, Loss: 0.00001101\n",
      "Epoch: 8910/20000, Loss: 0.00001090\n",
      "Epoch: 8920/20000, Loss: 0.00001079\n",
      "Epoch: 8930/20000, Loss: 0.00001068\n",
      "Epoch: 8940/20000, Loss: 0.00001057\n",
      "Epoch: 8950/20000, Loss: 0.00001046\n",
      "Epoch: 8960/20000, Loss: 0.00001035\n",
      "Epoch: 8970/20000, Loss: 0.00001025\n",
      "Epoch: 8980/20000, Loss: 0.00001014\n",
      "Epoch: 8990/20000, Loss: 0.00001004\n",
      "Epoch: 9000/20000, Loss: 0.00000993\n",
      "Epoch: 9010/20000, Loss: 0.00000983\n",
      "Epoch: 9020/20000, Loss: 0.00000973\n",
      "Epoch: 9030/20000, Loss: 0.00000963\n",
      "Epoch: 9040/20000, Loss: 0.00000953\n",
      "Epoch: 9050/20000, Loss: 0.00000944\n",
      "Epoch: 9060/20000, Loss: 0.00000941\n",
      "Epoch: 9070/20000, Loss: 0.00000929\n",
      "Epoch: 9080/20000, Loss: 0.00000915\n",
      "Epoch: 9090/20000, Loss: 0.00000906\n",
      "Epoch: 9100/20000, Loss: 0.00000896\n",
      "Epoch: 9110/20000, Loss: 0.00000887\n",
      "Epoch: 9120/20000, Loss: 0.00000878\n",
      "Epoch: 9130/20000, Loss: 0.00000869\n",
      "Epoch: 9140/20000, Loss: 0.00000860\n",
      "Epoch: 9150/20000, Loss: 0.00000851\n",
      "Epoch: 9160/20000, Loss: 0.00000843\n",
      "Epoch: 9170/20000, Loss: 0.00000834\n",
      "Epoch: 9180/20000, Loss: 0.00000826\n",
      "Epoch: 9190/20000, Loss: 0.00000817\n",
      "Epoch: 9200/20000, Loss: 0.00000809\n",
      "Epoch: 9210/20000, Loss: 0.00000800\n",
      "Epoch: 9220/20000, Loss: 0.00000792\n",
      "Epoch: 9230/20000, Loss: 0.00000784\n",
      "Epoch: 9240/20000, Loss: 0.00000776\n",
      "Epoch: 9250/20000, Loss: 0.00000768\n",
      "Epoch: 9260/20000, Loss: 0.00000761\n",
      "Epoch: 9270/20000, Loss: 0.00000754\n",
      "Epoch: 9280/20000, Loss: 0.00000747\n",
      "Epoch: 9290/20000, Loss: 0.00000738\n",
      "Epoch: 9300/20000, Loss: 0.00000730\n",
      "Epoch: 9310/20000, Loss: 0.00000723\n",
      "Epoch: 9320/20000, Loss: 0.00000715\n",
      "Epoch: 9330/20000, Loss: 0.00000708\n",
      "Epoch: 9340/20000, Loss: 0.00000701\n",
      "Epoch: 9350/20000, Loss: 0.00000694\n",
      "Epoch: 9360/20000, Loss: 0.00000686\n",
      "Epoch: 9370/20000, Loss: 0.00000680\n",
      "Epoch: 9380/20000, Loss: 0.00000673\n",
      "Epoch: 9390/20000, Loss: 0.00000671\n",
      "Epoch: 9400/20000, Loss: 0.00000660\n",
      "Epoch: 9410/20000, Loss: 0.00000653\n",
      "Epoch: 9420/20000, Loss: 0.00000646\n",
      "Epoch: 9430/20000, Loss: 0.00000639\n",
      "Epoch: 9440/20000, Loss: 0.00000633\n",
      "Epoch: 9450/20000, Loss: 0.00000626\n",
      "Epoch: 9460/20000, Loss: 0.00000620\n",
      "Epoch: 9470/20000, Loss: 0.00000614\n",
      "Epoch: 9480/20000, Loss: 0.00000607\n",
      "Epoch: 9490/20000, Loss: 0.00000601\n",
      "Epoch: 9500/20000, Loss: 0.00000595\n",
      "Epoch: 9510/20000, Loss: 0.00000589\n",
      "Epoch: 9520/20000, Loss: 0.00000583\n",
      "Epoch: 9530/20000, Loss: 0.00000581\n",
      "Epoch: 9540/20000, Loss: 0.00000572\n",
      "Epoch: 9550/20000, Loss: 0.00000567\n",
      "Epoch: 9560/20000, Loss: 0.00000560\n",
      "Epoch: 9570/20000, Loss: 0.00000555\n",
      "Epoch: 9580/20000, Loss: 0.00000549\n",
      "Epoch: 9590/20000, Loss: 0.00000543\n",
      "Epoch: 9600/20000, Loss: 0.00000538\n",
      "Epoch: 9610/20000, Loss: 0.00000532\n",
      "Epoch: 9620/20000, Loss: 0.00000527\n",
      "Epoch: 9630/20000, Loss: 0.00000522\n",
      "Epoch: 9640/20000, Loss: 0.00000517\n",
      "Epoch: 9650/20000, Loss: 0.00000512\n",
      "Epoch: 9660/20000, Loss: 0.00000506\n",
      "Epoch: 9670/20000, Loss: 0.00000501\n",
      "Epoch: 9680/20000, Loss: 0.00000496\n",
      "Epoch: 9690/20000, Loss: 0.00000491\n",
      "Epoch: 9700/20000, Loss: 0.00000486\n",
      "Epoch: 9710/20000, Loss: 0.00000482\n",
      "Epoch: 9720/20000, Loss: 0.00000479\n",
      "Epoch: 9730/20000, Loss: 0.00000472\n",
      "Epoch: 9740/20000, Loss: 0.00000467\n",
      "Epoch: 9750/20000, Loss: 0.00000463\n",
      "Epoch: 9760/20000, Loss: 0.00000458\n",
      "Epoch: 9770/20000, Loss: 0.00000453\n",
      "Epoch: 9780/20000, Loss: 0.00000449\n",
      "Epoch: 9790/20000, Loss: 0.00000444\n",
      "Epoch: 9800/20000, Loss: 0.00000440\n",
      "Epoch: 9810/20000, Loss: 0.00000436\n",
      "Epoch: 9820/20000, Loss: 0.00000431\n",
      "Epoch: 9830/20000, Loss: 0.00000427\n",
      "Epoch: 9840/20000, Loss: 0.00000423\n",
      "Epoch: 9850/20000, Loss: 0.00000419\n",
      "Epoch: 9860/20000, Loss: 0.00000419\n",
      "Epoch: 9870/20000, Loss: 0.00000412\n",
      "Epoch: 9880/20000, Loss: 0.00000407\n",
      "Epoch: 9890/20000, Loss: 0.00000403\n",
      "Epoch: 9900/20000, Loss: 0.00000398\n",
      "Epoch: 9910/20000, Loss: 0.00000394\n",
      "Epoch: 9920/20000, Loss: 0.00000391\n",
      "Epoch: 9930/20000, Loss: 0.00000387\n",
      "Epoch: 9940/20000, Loss: 0.00000384\n",
      "Epoch: 9950/20000, Loss: 0.00000380\n",
      "Epoch: 9960/20000, Loss: 0.00000376\n",
      "Epoch: 9970/20000, Loss: 0.00000372\n",
      "Epoch: 9980/20000, Loss: 0.00000368\n",
      "Epoch: 9990/20000, Loss: 0.00000366\n",
      "Epoch: 10000/20000, Loss: 0.00000361\n",
      "Epoch: 10010/20000, Loss: 0.00000358\n",
      "Epoch: 10020/20000, Loss: 0.00000354\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 10030/20000, Loss: 0.00000351\n",
      "Epoch: 10040/20000, Loss: 0.00000347\n",
      "Epoch: 10050/20000, Loss: 0.00000344\n",
      "Epoch: 10060/20000, Loss: 0.00000340\n",
      "Epoch: 10070/20000, Loss: 0.00000337\n",
      "Epoch: 10080/20000, Loss: 0.00000334\n",
      "Epoch: 10090/20000, Loss: 0.00000332\n",
      "Epoch: 10100/20000, Loss: 0.00000330\n",
      "Epoch: 10110/20000, Loss: 0.00000324\n",
      "Epoch: 10120/20000, Loss: 0.00000321\n",
      "Epoch: 10130/20000, Loss: 0.00000318\n",
      "Epoch: 10140/20000, Loss: 0.00000315\n",
      "Epoch: 10150/20000, Loss: 0.00000312\n",
      "Epoch: 10160/20000, Loss: 0.00000309\n",
      "Epoch: 10170/20000, Loss: 0.00000306\n",
      "Epoch: 10180/20000, Loss: 0.00000303\n",
      "Epoch: 10190/20000, Loss: 0.00000300\n",
      "Epoch: 10200/20000, Loss: 0.00000297\n",
      "Epoch: 10210/20000, Loss: 0.00000294\n",
      "Epoch: 10220/20000, Loss: 0.00000293\n",
      "Epoch: 10230/20000, Loss: 0.00000291\n",
      "Epoch: 10240/20000, Loss: 0.00000287\n",
      "Epoch: 10250/20000, Loss: 0.00000284\n",
      "Epoch: 10260/20000, Loss: 0.00000281\n",
      "Epoch: 10270/20000, Loss: 0.00000278\n",
      "Epoch: 10280/20000, Loss: 0.00000275\n",
      "Epoch: 10290/20000, Loss: 0.00000273\n",
      "Epoch: 10300/20000, Loss: 0.00000270\n",
      "Epoch: 10310/20000, Loss: 0.00000268\n",
      "Epoch: 10320/20000, Loss: 0.00000267\n",
      "Epoch: 10330/20000, Loss: 0.00000263\n",
      "Epoch: 10340/20000, Loss: 0.00000260\n",
      "Epoch: 10350/20000, Loss: 0.00000258\n",
      "Epoch: 10360/20000, Loss: 0.00000255\n",
      "Epoch: 10370/20000, Loss: 0.00000253\n",
      "Epoch: 10380/20000, Loss: 0.00000250\n",
      "Epoch: 10390/20000, Loss: 0.00000248\n",
      "Epoch: 10400/20000, Loss: 0.00000247\n",
      "Epoch: 10410/20000, Loss: 0.00000244\n",
      "Epoch: 10420/20000, Loss: 0.00000241\n",
      "Epoch: 10430/20000, Loss: 0.00000239\n",
      "Epoch: 10440/20000, Loss: 0.00000237\n",
      "Epoch: 10450/20000, Loss: 0.00000236\n",
      "Epoch: 10460/20000, Loss: 0.00000233\n",
      "Epoch: 10470/20000, Loss: 0.00000230\n",
      "Epoch: 10480/20000, Loss: 0.00000228\n",
      "Epoch: 10490/20000, Loss: 0.00000226\n",
      "Epoch: 10500/20000, Loss: 0.00000224\n",
      "Epoch: 10510/20000, Loss: 0.00000222\n",
      "Epoch: 10520/20000, Loss: 0.00000220\n",
      "Epoch: 10530/20000, Loss: 0.00000218\n",
      "Epoch: 10540/20000, Loss: 0.00000221\n",
      "Epoch: 10550/20000, Loss: 0.00000216\n",
      "Epoch: 10560/20000, Loss: 0.00000212\n",
      "Epoch: 10570/20000, Loss: 0.00000210\n",
      "Epoch: 10580/20000, Loss: 0.00000208\n",
      "Epoch: 10590/20000, Loss: 0.00000206\n",
      "Epoch: 10600/20000, Loss: 0.00000204\n",
      "Epoch: 10610/20000, Loss: 0.00000202\n",
      "Epoch: 10620/20000, Loss: 0.00000200\n",
      "Epoch: 10630/20000, Loss: 0.00000199\n",
      "Epoch: 10640/20000, Loss: 0.00000198\n",
      "Epoch: 10650/20000, Loss: 0.00000195\n",
      "Epoch: 10660/20000, Loss: 0.00000193\n",
      "Epoch: 10670/20000, Loss: 0.00000191\n",
      "Epoch: 10680/20000, Loss: 0.00000190\n",
      "Epoch: 10690/20000, Loss: 0.00000189\n",
      "Epoch: 10700/20000, Loss: 0.00000188\n",
      "Epoch: 10710/20000, Loss: 0.00000185\n",
      "Epoch: 10720/20000, Loss: 0.00000183\n",
      "Epoch: 10730/20000, Loss: 0.00000181\n",
      "Epoch: 10740/20000, Loss: 0.00000180\n",
      "Epoch: 10750/20000, Loss: 0.00000178\n",
      "Epoch: 10760/20000, Loss: 0.00000177\n",
      "Epoch: 10770/20000, Loss: 0.00000178\n",
      "Epoch: 10780/20000, Loss: 0.00000174\n",
      "Epoch: 10790/20000, Loss: 0.00000172\n",
      "Epoch: 10800/20000, Loss: 0.00000170\n",
      "Epoch: 10810/20000, Loss: 0.00000169\n",
      "Epoch: 10820/20000, Loss: 0.00000167\n",
      "Epoch: 10830/20000, Loss: 0.00000166\n",
      "Epoch: 10840/20000, Loss: 0.00000164\n",
      "Epoch: 10850/20000, Loss: 0.00000165\n",
      "Epoch: 10860/20000, Loss: 0.00000162\n",
      "Epoch: 10870/20000, Loss: 0.00000160\n",
      "Epoch: 10880/20000, Loss: 0.00000159\n",
      "Epoch: 10890/20000, Loss: 0.00000157\n",
      "Epoch: 10900/20000, Loss: 0.00000157\n",
      "Epoch: 10910/20000, Loss: 0.00000156\n",
      "Epoch: 10920/20000, Loss: 0.00000153\n",
      "Epoch: 10930/20000, Loss: 0.00000152\n",
      "Epoch: 10940/20000, Loss: 0.00000150\n",
      "Epoch: 10950/20000, Loss: 0.00000149\n",
      "Epoch: 10960/20000, Loss: 0.00000149\n",
      "Epoch: 10970/20000, Loss: 0.00000150\n",
      "Epoch: 10980/20000, Loss: 0.00000145\n",
      "Epoch: 10990/20000, Loss: 0.00000144\n",
      "Epoch: 11000/20000, Loss: 0.00000143\n",
      "Epoch: 11010/20000, Loss: 0.00000141\n",
      "Epoch: 11020/20000, Loss: 0.00000140\n",
      "Epoch: 11030/20000, Loss: 0.00000139\n",
      "Epoch: 11040/20000, Loss: 0.00000139\n",
      "Epoch: 11050/20000, Loss: 0.00000142\n",
      "Epoch: 11060/20000, Loss: 0.00000137\n",
      "Epoch: 11070/20000, Loss: 0.00000135\n",
      "Epoch: 11080/20000, Loss: 0.00000133\n",
      "Epoch: 11090/20000, Loss: 0.00000132\n",
      "Epoch: 11100/20000, Loss: 0.00000131\n",
      "Epoch: 11110/20000, Loss: 0.00000130\n",
      "Epoch: 11120/20000, Loss: 0.00000129\n",
      "Epoch: 11130/20000, Loss: 0.00000129\n",
      "Epoch: 11140/20000, Loss: 0.00000129\n",
      "Epoch: 11150/20000, Loss: 0.00000126\n",
      "Epoch: 11160/20000, Loss: 0.00000124\n",
      "Epoch: 11170/20000, Loss: 0.00000123\n",
      "Epoch: 11180/20000, Loss: 0.00000122\n",
      "Epoch: 11190/20000, Loss: 0.00000121\n",
      "Epoch: 11200/20000, Loss: 0.00000120\n",
      "Epoch: 11210/20000, Loss: 0.00000119\n",
      "Epoch: 11220/20000, Loss: 0.00000122\n",
      "Epoch: 11230/20000, Loss: 0.00000124\n",
      "Epoch: 11240/20000, Loss: 0.00000117\n",
      "Epoch: 11250/20000, Loss: 0.00000116\n",
      "Epoch: 11260/20000, Loss: 0.00000115\n",
      "Epoch: 11270/20000, Loss: 0.00000113\n",
      "Epoch: 11280/20000, Loss: 0.00000113\n",
      "Epoch: 11290/20000, Loss: 0.00000112\n",
      "Epoch: 11300/20000, Loss: 0.00000111\n",
      "Epoch: 11310/20000, Loss: 0.00000110\n",
      "Epoch: 11320/20000, Loss: 0.00000109\n",
      "Epoch: 11330/20000, Loss: 0.00000108\n",
      "Epoch: 11340/20000, Loss: 0.00000111\n",
      "Epoch: 11350/20000, Loss: 0.00000106\n",
      "Epoch: 11360/20000, Loss: 0.00000106\n",
      "Epoch: 11370/20000, Loss: 0.00000105\n",
      "Epoch: 11380/20000, Loss: 0.00000104\n",
      "Epoch: 11390/20000, Loss: 0.00000103\n",
      "Epoch: 11400/20000, Loss: 0.00000105\n",
      "Epoch: 11410/20000, Loss: 0.00000102\n",
      "Epoch: 11420/20000, Loss: 0.00000100\n",
      "Epoch: 11430/20000, Loss: 0.00000100\n",
      "Epoch: 11440/20000, Loss: 0.00000099\n",
      "Epoch: 11450/20000, Loss: 0.00000098\n",
      "Epoch: 11460/20000, Loss: 0.00000097\n",
      "Epoch: 11470/20000, Loss: 0.00000096\n",
      "Epoch: 11480/20000, Loss: 0.00000096\n",
      "Epoch: 11490/20000, Loss: 0.00000104\n",
      "Epoch: 11500/20000, Loss: 0.00000097\n",
      "Epoch: 11510/20000, Loss: 0.00000094\n",
      "Epoch: 11520/20000, Loss: 0.00000093\n",
      "Epoch: 11530/20000, Loss: 0.00000092\n",
      "Epoch: 11540/20000, Loss: 0.00000091\n",
      "Epoch: 11550/20000, Loss: 0.00000091\n",
      "Epoch: 11560/20000, Loss: 0.00000090\n",
      "Epoch: 11570/20000, Loss: 0.00000089\n",
      "Epoch: 11580/20000, Loss: 0.00000088\n",
      "Epoch: 11590/20000, Loss: 0.00000088\n",
      "Epoch: 11600/20000, Loss: 0.00000087\n",
      "Epoch: 11610/20000, Loss: 0.00000087\n",
      "Epoch: 11620/20000, Loss: 0.00000088\n",
      "Epoch: 11630/20000, Loss: 0.00000089\n",
      "Epoch: 11640/20000, Loss: 0.00000086\n",
      "Epoch: 11650/20000, Loss: 0.00000085\n",
      "Epoch: 11660/20000, Loss: 0.00000083\n",
      "Epoch: 11670/20000, Loss: 0.00000083\n",
      "Epoch: 11680/20000, Loss: 0.00000082\n",
      "Epoch: 11690/20000, Loss: 0.00000081\n",
      "Epoch: 11700/20000, Loss: 0.00000081\n",
      "Epoch: 11710/20000, Loss: 0.00000080\n",
      "Epoch: 11720/20000, Loss: 0.00000079\n",
      "Epoch: 11730/20000, Loss: 0.00000079\n",
      "Epoch: 11740/20000, Loss: 0.00000078\n",
      "Epoch: 11750/20000, Loss: 0.00000077\n",
      "Epoch: 11760/20000, Loss: 0.00000077\n",
      "Epoch: 11770/20000, Loss: 0.00000078\n",
      "Epoch: 11780/20000, Loss: 0.00000077\n",
      "Epoch: 11790/20000, Loss: 0.00000077\n",
      "Epoch: 11800/20000, Loss: 0.00000075\n",
      "Epoch: 11810/20000, Loss: 0.00000074\n",
      "Epoch: 11820/20000, Loss: 0.00000074\n",
      "Epoch: 11830/20000, Loss: 0.00000073\n",
      "Epoch: 11840/20000, Loss: 0.00000072\n",
      "Epoch: 11850/20000, Loss: 0.00000072\n",
      "Epoch: 11860/20000, Loss: 0.00000073\n",
      "Epoch: 11870/20000, Loss: 0.00000072\n",
      "Epoch: 11880/20000, Loss: 0.00000071\n",
      "Epoch: 11890/20000, Loss: 0.00000070\n",
      "Epoch: 11900/20000, Loss: 0.00000069\n",
      "Epoch: 11910/20000, Loss: 0.00000069\n",
      "Epoch: 11920/20000, Loss: 0.00000069\n",
      "Epoch: 11930/20000, Loss: 0.00000071\n",
      "Epoch: 11940/20000, Loss: 0.00000068\n",
      "Epoch: 11950/20000, Loss: 0.00000067\n",
      "Epoch: 11960/20000, Loss: 0.00000067\n",
      "Epoch: 11970/20000, Loss: 0.00000067\n",
      "Epoch: 11980/20000, Loss: 0.00000065\n",
      "Epoch: 11990/20000, Loss: 0.00000065\n",
      "Epoch: 12000/20000, Loss: 0.00000064\n",
      "Epoch: 12010/20000, Loss: 0.00000064\n",
      "Epoch: 12020/20000, Loss: 0.00000065\n",
      "Epoch: 12030/20000, Loss: 0.00000066\n",
      "Epoch: 12040/20000, Loss: 0.00000064\n",
      "Epoch: 12050/20000, Loss: 0.00000062\n",
      "Epoch: 12060/20000, Loss: 0.00000061\n",
      "Epoch: 12070/20000, Loss: 0.00000061\n",
      "Epoch: 12080/20000, Loss: 0.00000061\n",
      "Epoch: 12090/20000, Loss: 0.00000060\n",
      "Epoch: 12100/20000, Loss: 0.00000061\n",
      "Epoch: 12110/20000, Loss: 0.00000063\n",
      "Epoch: 12120/20000, Loss: 0.00000060\n",
      "Epoch: 12130/20000, Loss: 0.00000059\n",
      "Epoch: 12140/20000, Loss: 0.00000058\n",
      "Epoch: 12150/20000, Loss: 0.00000058\n",
      "Epoch: 12160/20000, Loss: 0.00000057\n",
      "Epoch: 12170/20000, Loss: 0.00000057\n",
      "Epoch: 12180/20000, Loss: 0.00000058\n",
      "Epoch: 12190/20000, Loss: 0.00000057\n",
      "Epoch: 12200/20000, Loss: 0.00000056\n",
      "Epoch: 12210/20000, Loss: 0.00000055\n",
      "Epoch: 12220/20000, Loss: 0.00000055\n",
      "Epoch: 12230/20000, Loss: 0.00000054\n",
      "Epoch: 12240/20000, Loss: 0.00000056\n",
      "Epoch: 12250/20000, Loss: 0.00000054\n",
      "Epoch: 12260/20000, Loss: 0.00000054\n",
      "Epoch: 12270/20000, Loss: 0.00000053\n",
      "Epoch: 12280/20000, Loss: 0.00000053\n",
      "Epoch: 12290/20000, Loss: 0.00000053\n",
      "Epoch: 12300/20000, Loss: 0.00000059\n",
      "Epoch: 12310/20000, Loss: 0.00000054\n",
      "Epoch: 12320/20000, Loss: 0.00000052\n",
      "Epoch: 12330/20000, Loss: 0.00000051\n",
      "Epoch: 12340/20000, Loss: 0.00000050\n",
      "Epoch: 12350/20000, Loss: 0.00000050\n",
      "Epoch: 12360/20000, Loss: 0.00000050\n",
      "Epoch: 12370/20000, Loss: 0.00000049\n",
      "Epoch: 12380/20000, Loss: 0.00000049\n",
      "Epoch: 12390/20000, Loss: 0.00000049\n",
      "Epoch: 12400/20000, Loss: 0.00000052\n",
      "Epoch: 12410/20000, Loss: 0.00000050\n",
      "Epoch: 12420/20000, Loss: 0.00000049\n",
      "Epoch: 12430/20000, Loss: 0.00000048\n",
      "Epoch: 12440/20000, Loss: 0.00000047\n",
      "Epoch: 12450/20000, Loss: 0.00000048\n",
      "Epoch: 12460/20000, Loss: 0.00000048\n",
      "Epoch: 12470/20000, Loss: 0.00000047\n",
      "Epoch: 12480/20000, Loss: 0.00000046\n",
      "Epoch: 12490/20000, Loss: 0.00000045\n",
      "Epoch: 12500/20000, Loss: 0.00000045\n",
      "Epoch: 12510/20000, Loss: 0.00000045\n",
      "Epoch: 12520/20000, Loss: 0.00000044\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 12530/20000, Loss: 0.00000044\n",
      "Epoch: 12540/20000, Loss: 0.00000045\n",
      "Epoch: 12550/20000, Loss: 0.00000047\n",
      "Epoch: 12560/20000, Loss: 0.00000045\n",
      "Epoch: 12570/20000, Loss: 0.00000043\n",
      "Epoch: 12580/20000, Loss: 0.00000043\n",
      "Epoch: 12590/20000, Loss: 0.00000043\n",
      "Epoch: 12600/20000, Loss: 0.00000046\n",
      "Epoch: 12610/20000, Loss: 0.00000043\n",
      "Epoch: 12620/20000, Loss: 0.00000042\n",
      "Epoch: 12630/20000, Loss: 0.00000041\n",
      "Epoch: 12640/20000, Loss: 0.00000041\n",
      "Epoch: 12650/20000, Loss: 0.00000043\n",
      "Epoch: 12660/20000, Loss: 0.00000042\n",
      "Epoch: 12670/20000, Loss: 0.00000041\n",
      "Epoch: 12680/20000, Loss: 0.00000040\n",
      "Epoch: 12690/20000, Loss: 0.00000040\n",
      "Epoch: 12700/20000, Loss: 0.00000040\n",
      "Epoch: 12710/20000, Loss: 0.00000041\n",
      "Epoch: 12720/20000, Loss: 0.00000039\n",
      "Epoch: 12730/20000, Loss: 0.00000039\n",
      "Epoch: 12740/20000, Loss: 0.00000039\n",
      "Epoch: 12750/20000, Loss: 0.00000038\n",
      "Epoch: 12760/20000, Loss: 0.00000039\n",
      "Epoch: 12770/20000, Loss: 0.00000040\n",
      "Epoch: 12780/20000, Loss: 0.00000038\n",
      "Epoch: 12790/20000, Loss: 0.00000038\n",
      "Epoch: 12800/20000, Loss: 0.00000037\n",
      "Epoch: 12810/20000, Loss: 0.00000039\n",
      "Epoch: 12820/20000, Loss: 0.00000036\n",
      "Epoch: 12830/20000, Loss: 0.00000036\n",
      "Epoch: 12840/20000, Loss: 0.00000036\n",
      "Epoch: 12850/20000, Loss: 0.00000036\n",
      "Epoch: 12860/20000, Loss: 0.00000036\n",
      "Epoch: 12870/20000, Loss: 0.00000036\n",
      "Epoch: 12880/20000, Loss: 0.00000039\n",
      "Epoch: 12890/20000, Loss: 0.00000037\n",
      "Epoch: 12900/20000, Loss: 0.00000035\n",
      "Epoch: 12910/20000, Loss: 0.00000034\n",
      "Epoch: 12920/20000, Loss: 0.00000034\n",
      "Epoch: 12930/20000, Loss: 0.00000034\n",
      "Epoch: 12940/20000, Loss: 0.00000034\n",
      "Epoch: 12950/20000, Loss: 0.00000033\n",
      "Epoch: 12960/20000, Loss: 0.00000033\n",
      "Epoch: 12970/20000, Loss: 0.00000033\n",
      "Epoch: 12980/20000, Loss: 0.00000037\n",
      "Epoch: 12990/20000, Loss: 0.00000034\n",
      "Epoch: 13000/20000, Loss: 0.00000033\n",
      "Epoch: 13010/20000, Loss: 0.00000033\n",
      "Epoch: 13020/20000, Loss: 0.00000032\n",
      "Epoch: 13030/20000, Loss: 0.00000032\n",
      "Epoch: 13040/20000, Loss: 0.00000032\n",
      "Epoch: 13050/20000, Loss: 0.00000033\n",
      "Epoch: 13060/20000, Loss: 0.00000032\n",
      "Epoch: 13070/20000, Loss: 0.00000032\n",
      "Epoch: 13080/20000, Loss: 0.00000031\n",
      "Epoch: 13090/20000, Loss: 0.00000031\n",
      "Epoch: 13100/20000, Loss: 0.00000030\n",
      "Epoch: 13110/20000, Loss: 0.00000030\n",
      "Epoch: 13120/20000, Loss: 0.00000031\n",
      "Epoch: 13130/20000, Loss: 0.00000041\n",
      "Epoch: 13140/20000, Loss: 0.00000031\n",
      "Epoch: 13150/20000, Loss: 0.00000030\n",
      "Epoch: 13160/20000, Loss: 0.00000030\n",
      "Epoch: 13170/20000, Loss: 0.00000029\n",
      "Epoch: 13180/20000, Loss: 0.00000029\n",
      "Epoch: 13190/20000, Loss: 0.00000029\n",
      "Epoch: 13200/20000, Loss: 0.00000029\n",
      "Epoch: 13210/20000, Loss: 0.00000028\n",
      "Epoch: 13220/20000, Loss: 0.00000029\n",
      "Epoch: 13230/20000, Loss: 0.00000034\n",
      "Epoch: 13240/20000, Loss: 0.00000030\n",
      "Epoch: 13250/20000, Loss: 0.00000028\n",
      "Epoch: 13260/20000, Loss: 0.00000028\n",
      "Epoch: 13270/20000, Loss: 0.00000027\n",
      "Epoch: 13280/20000, Loss: 0.00000027\n",
      "Epoch: 13290/20000, Loss: 0.00000027\n",
      "Epoch: 13300/20000, Loss: 0.00000027\n",
      "Epoch: 13310/20000, Loss: 0.00000027\n",
      "Epoch: 13320/20000, Loss: 0.00000041\n",
      "Epoch: 13330/20000, Loss: 0.00000027\n",
      "Epoch: 13340/20000, Loss: 0.00000028\n",
      "Epoch: 13350/20000, Loss: 0.00000026\n",
      "Epoch: 13360/20000, Loss: 0.00000026\n",
      "Epoch: 13370/20000, Loss: 0.00000026\n",
      "Epoch: 13380/20000, Loss: 0.00000028\n",
      "Epoch: 13390/20000, Loss: 0.00000026\n",
      "Epoch: 13400/20000, Loss: 0.00000025\n",
      "Epoch: 13410/20000, Loss: 0.00000025\n",
      "Epoch: 13420/20000, Loss: 0.00000025\n",
      "Epoch: 13430/20000, Loss: 0.00000025\n",
      "Epoch: 13440/20000, Loss: 0.00000025\n",
      "Epoch: 13450/20000, Loss: 0.00000025\n",
      "Epoch: 13460/20000, Loss: 0.00000024\n",
      "Epoch: 13470/20000, Loss: 0.00000024\n",
      "Epoch: 13480/20000, Loss: 0.00000024\n",
      "Epoch: 13490/20000, Loss: 0.00000029\n",
      "Epoch: 13500/20000, Loss: 0.00000026\n",
      "Epoch: 13510/20000, Loss: 0.00000025\n",
      "Epoch: 13520/20000, Loss: 0.00000024\n",
      "Epoch: 13530/20000, Loss: 0.00000024\n",
      "Epoch: 13540/20000, Loss: 0.00000024\n",
      "Epoch: 13550/20000, Loss: 0.00000025\n",
      "Epoch: 13560/20000, Loss: 0.00000023\n",
      "Epoch: 13570/20000, Loss: 0.00000023\n",
      "Epoch: 13580/20000, Loss: 0.00000023\n",
      "Epoch: 13590/20000, Loss: 0.00000023\n",
      "Epoch: 13600/20000, Loss: 0.00000023\n",
      "Epoch: 13610/20000, Loss: 0.00000027\n",
      "Epoch: 13620/20000, Loss: 0.00000024\n",
      "Epoch: 13630/20000, Loss: 0.00000023\n",
      "Epoch: 13640/20000, Loss: 0.00000022\n",
      "Epoch: 13650/20000, Loss: 0.00000022\n",
      "Epoch: 13660/20000, Loss: 0.00000022\n",
      "Epoch: 13670/20000, Loss: 0.00000022\n",
      "Epoch: 13680/20000, Loss: 0.00000022\n",
      "Epoch: 13690/20000, Loss: 0.00000021\n",
      "Epoch: 13700/20000, Loss: 0.00000021\n",
      "Epoch: 13710/20000, Loss: 0.00000022\n",
      "Epoch: 13720/20000, Loss: 0.00000027\n",
      "Epoch: 13730/20000, Loss: 0.00000024\n",
      "Epoch: 13740/20000, Loss: 0.00000028\n",
      "Epoch: 13750/20000, Loss: 0.00000022\n",
      "Epoch: 13760/20000, Loss: 0.00000021\n",
      "Epoch: 13770/20000, Loss: 0.00000021\n",
      "Epoch: 13780/20000, Loss: 0.00000020\n",
      "Epoch: 13790/20000, Loss: 0.00000020\n",
      "Epoch: 13800/20000, Loss: 0.00000020\n",
      "Epoch: 13810/20000, Loss: 0.00000020\n",
      "Epoch: 13820/20000, Loss: 0.00000020\n",
      "Epoch: 13830/20000, Loss: 0.00000020\n",
      "Epoch: 13840/20000, Loss: 0.00000020\n",
      "Epoch: 13850/20000, Loss: 0.00000020\n",
      "Epoch: 13860/20000, Loss: 0.00000026\n",
      "Epoch: 13870/20000, Loss: 0.00000021\n",
      "Epoch: 13880/20000, Loss: 0.00000021\n",
      "Epoch: 13890/20000, Loss: 0.00000020\n",
      "Epoch: 13900/20000, Loss: 0.00000019\n",
      "Epoch: 13910/20000, Loss: 0.00000019\n",
      "Epoch: 13920/20000, Loss: 0.00000019\n",
      "Epoch: 13930/20000, Loss: 0.00000019\n",
      "Epoch: 13940/20000, Loss: 0.00000019\n",
      "Epoch: 13950/20000, Loss: 0.00000019\n",
      "Epoch: 13960/20000, Loss: 0.00000026\n",
      "Epoch: 13970/20000, Loss: 0.00000020\n",
      "Epoch: 13980/20000, Loss: 0.00000019\n",
      "Epoch: 13990/20000, Loss: 0.00000018\n",
      "Epoch: 14000/20000, Loss: 0.00000018\n",
      "Epoch: 14010/20000, Loss: 0.00000018\n",
      "Epoch: 14020/20000, Loss: 0.00000018\n",
      "Epoch: 14030/20000, Loss: 0.00000021\n",
      "Epoch: 14040/20000, Loss: 0.00000018\n",
      "Epoch: 14050/20000, Loss: 0.00000020\n",
      "Epoch: 14060/20000, Loss: 0.00000017\n",
      "Epoch: 14070/20000, Loss: 0.00000018\n",
      "Epoch: 14080/20000, Loss: 0.00000017\n",
      "Epoch: 14090/20000, Loss: 0.00000017\n",
      "Epoch: 14100/20000, Loss: 0.00000020\n",
      "Epoch: 14110/20000, Loss: 0.00000018\n",
      "Epoch: 14120/20000, Loss: 0.00000017\n",
      "Epoch: 14130/20000, Loss: 0.00000017\n",
      "Epoch: 14140/20000, Loss: 0.00000017\n",
      "Epoch: 14150/20000, Loss: 0.00000017\n",
      "Epoch: 14160/20000, Loss: 0.00000017\n",
      "Epoch: 14170/20000, Loss: 0.00000016\n",
      "Epoch: 14180/20000, Loss: 0.00000016\n",
      "Epoch: 14190/20000, Loss: 0.00000016\n",
      "Epoch: 14200/20000, Loss: 0.00000018\n",
      "Epoch: 14210/20000, Loss: 0.00000024\n",
      "Epoch: 14220/20000, Loss: 0.00000018\n",
      "Epoch: 14230/20000, Loss: 0.00000016\n",
      "Epoch: 14240/20000, Loss: 0.00000016\n",
      "Epoch: 14250/20000, Loss: 0.00000016\n",
      "Epoch: 14260/20000, Loss: 0.00000016\n",
      "Epoch: 14270/20000, Loss: 0.00000016\n",
      "Epoch: 14280/20000, Loss: 0.00000016\n",
      "Epoch: 14290/20000, Loss: 0.00000015\n",
      "Epoch: 14300/20000, Loss: 0.00000015\n",
      "Epoch: 14310/20000, Loss: 0.00000017\n",
      "Epoch: 14320/20000, Loss: 0.00000017\n",
      "Epoch: 14330/20000, Loss: 0.00000016\n",
      "Epoch: 14340/20000, Loss: 0.00000016\n",
      "Epoch: 14350/20000, Loss: 0.00000015\n",
      "Epoch: 14360/20000, Loss: 0.00000015\n",
      "Epoch: 14370/20000, Loss: 0.00000015\n",
      "Epoch: 14380/20000, Loss: 0.00000020\n",
      "Epoch: 14390/20000, Loss: 0.00000015\n",
      "Epoch: 14400/20000, Loss: 0.00000015\n",
      "Epoch: 14410/20000, Loss: 0.00000015\n",
      "Epoch: 14420/20000, Loss: 0.00000015\n",
      "Epoch: 14430/20000, Loss: 0.00000014\n",
      "Epoch: 14440/20000, Loss: 0.00000014\n",
      "Epoch: 14450/20000, Loss: 0.00000014\n",
      "Epoch: 14460/20000, Loss: 0.00000016\n",
      "Epoch: 14470/20000, Loss: 0.00000017\n",
      "Epoch: 14480/20000, Loss: 0.00000015\n",
      "Epoch: 14490/20000, Loss: 0.00000014\n",
      "Epoch: 14500/20000, Loss: 0.00000014\n",
      "Epoch: 14510/20000, Loss: 0.00000014\n",
      "Epoch: 14520/20000, Loss: 0.00000015\n",
      "Epoch: 14530/20000, Loss: 0.00000014\n",
      "Epoch: 14540/20000, Loss: 0.00000014\n",
      "Epoch: 14550/20000, Loss: 0.00000014\n",
      "Epoch: 14560/20000, Loss: 0.00000014\n",
      "Epoch: 14570/20000, Loss: 0.00000014\n",
      "Epoch: 14580/20000, Loss: 0.00000014\n",
      "Epoch: 14590/20000, Loss: 0.00000024\n",
      "Epoch: 14600/20000, Loss: 0.00000016\n",
      "Epoch: 14610/20000, Loss: 0.00000014\n",
      "Epoch: 14620/20000, Loss: 0.00000014\n",
      "Epoch: 14630/20000, Loss: 0.00000013\n",
      "Epoch: 14640/20000, Loss: 0.00000013\n",
      "Epoch: 14650/20000, Loss: 0.00000013\n",
      "Epoch: 14660/20000, Loss: 0.00000013\n",
      "Epoch: 14670/20000, Loss: 0.00000013\n",
      "Epoch: 14680/20000, Loss: 0.00000015\n",
      "Epoch: 14690/20000, Loss: 0.00000015\n",
      "Epoch: 14700/20000, Loss: 0.00000013\n",
      "Epoch: 14710/20000, Loss: 0.00000013\n",
      "Epoch: 14720/20000, Loss: 0.00000013\n",
      "Epoch: 14730/20000, Loss: 0.00000013\n",
      "Epoch: 14740/20000, Loss: 0.00000013\n",
      "Epoch: 14750/20000, Loss: 0.00000015\n",
      "Epoch: 14760/20000, Loss: 0.00000012\n",
      "Epoch: 14770/20000, Loss: 0.00000013\n",
      "Epoch: 14780/20000, Loss: 0.00000012\n",
      "Epoch: 14790/20000, Loss: 0.00000012\n",
      "Epoch: 14800/20000, Loss: 0.00000012\n",
      "Epoch: 14810/20000, Loss: 0.00000014\n",
      "Epoch: 14820/20000, Loss: 0.00000020\n",
      "Epoch: 14830/20000, Loss: 0.00000014\n",
      "Epoch: 14840/20000, Loss: 0.00000012\n",
      "Epoch: 14850/20000, Loss: 0.00000012\n",
      "Epoch: 14860/20000, Loss: 0.00000012\n",
      "Epoch: 14870/20000, Loss: 0.00000012\n",
      "Epoch: 14880/20000, Loss: 0.00000012\n",
      "Epoch: 14890/20000, Loss: 0.00000012\n",
      "Epoch: 14900/20000, Loss: 0.00000017\n",
      "Epoch: 14910/20000, Loss: 0.00000012\n",
      "Epoch: 14920/20000, Loss: 0.00000012\n",
      "Epoch: 14930/20000, Loss: 0.00000012\n",
      "Epoch: 14940/20000, Loss: 0.00000012\n",
      "Epoch: 14950/20000, Loss: 0.00000016\n",
      "Epoch: 14960/20000, Loss: 0.00000013\n",
      "Epoch: 14970/20000, Loss: 0.00000012\n",
      "Epoch: 14980/20000, Loss: 0.00000011\n",
      "Epoch: 14990/20000, Loss: 0.00000011\n",
      "Epoch: 15000/20000, Loss: 0.00000011\n",
      "Epoch: 15010/20000, Loss: 0.00000011\n",
      "Epoch: 15020/20000, Loss: 0.00000020\n",
      "Epoch: 15030/20000, Loss: 0.00000016\n",
      "Epoch: 15040/20000, Loss: 0.00000012\n",
      "Epoch: 15050/20000, Loss: 0.00000011\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 15060/20000, Loss: 0.00000012\n",
      "Epoch: 15070/20000, Loss: 0.00000013\n",
      "Epoch: 15080/20000, Loss: 0.00000011\n",
      "Epoch: 15090/20000, Loss: 0.00000011\n",
      "Epoch: 15100/20000, Loss: 0.00000011\n",
      "Epoch: 15110/20000, Loss: 0.00000011\n",
      "Epoch: 15120/20000, Loss: 0.00000010\n",
      "Epoch: 15130/20000, Loss: 0.00000010\n",
      "Epoch: 15140/20000, Loss: 0.00000010\n",
      "Epoch: 15150/20000, Loss: 0.00000010\n",
      "Epoch: 15160/20000, Loss: 0.00000017\n",
      "Epoch: 15170/20000, Loss: 0.00000015\n",
      "Epoch: 15180/20000, Loss: 0.00000011\n",
      "Epoch: 15190/20000, Loss: 0.00000011\n",
      "Epoch: 15200/20000, Loss: 0.00000010\n",
      "Epoch: 15210/20000, Loss: 0.00000012\n",
      "Epoch: 15220/20000, Loss: 0.00000014\n",
      "Epoch: 15230/20000, Loss: 0.00000011\n",
      "Epoch: 15240/20000, Loss: 0.00000011\n",
      "Epoch: 15250/20000, Loss: 0.00000010\n",
      "Epoch: 15260/20000, Loss: 0.00000010\n",
      "Epoch: 15270/20000, Loss: 0.00000010\n",
      "Epoch: 15280/20000, Loss: 0.00000010\n",
      "Epoch: 15290/20000, Loss: 0.00000010\n",
      "Epoch: 15300/20000, Loss: 0.00000010\n",
      "Epoch: 15310/20000, Loss: 0.00000010\n",
      "Epoch: 15320/20000, Loss: 0.00000015\n",
      "Epoch: 15330/20000, Loss: 0.00000010\n",
      "Epoch: 15340/20000, Loss: 0.00000010\n",
      "Epoch: 15350/20000, Loss: 0.00000010\n",
      "Epoch: 15360/20000, Loss: 0.00000010\n",
      "Epoch: 15370/20000, Loss: 0.00000012\n",
      "Epoch: 15380/20000, Loss: 0.00000011\n",
      "Epoch: 15390/20000, Loss: 0.00000010\n",
      "Epoch: 15400/20000, Loss: 0.00000009\n",
      "Epoch: 15410/20000, Loss: 0.00000009\n",
      "Epoch: 15420/20000, Loss: 0.00000009\n",
      "Epoch: 15430/20000, Loss: 0.00000009\n",
      "Epoch: 15440/20000, Loss: 0.00000010\n",
      "Epoch: 15450/20000, Loss: 0.00000016\n",
      "Epoch: 15460/20000, Loss: 0.00000011\n",
      "Epoch: 15470/20000, Loss: 0.00000010\n",
      "Epoch: 15480/20000, Loss: 0.00000010\n",
      "Epoch: 15490/20000, Loss: 0.00000009\n",
      "Epoch: 15500/20000, Loss: 0.00000010\n",
      "Epoch: 15510/20000, Loss: 0.00000019\n",
      "Epoch: 15520/20000, Loss: 0.00000011\n",
      "Epoch: 15530/20000, Loss: 0.00000009\n",
      "Epoch: 15540/20000, Loss: 0.00000009\n",
      "Epoch: 15550/20000, Loss: 0.00000009\n",
      "Epoch: 15560/20000, Loss: 0.00000009\n",
      "Epoch: 15570/20000, Loss: 0.00000009\n",
      "Epoch: 15580/20000, Loss: 0.00000009\n",
      "Epoch: 15590/20000, Loss: 0.00000009\n",
      "Epoch: 15600/20000, Loss: 0.00000010\n",
      "Epoch: 15610/20000, Loss: 0.00000014\n",
      "Epoch: 15620/20000, Loss: 0.00000009\n",
      "Epoch: 15630/20000, Loss: 0.00000010\n",
      "Epoch: 15640/20000, Loss: 0.00000009\n",
      "Epoch: 15650/20000, Loss: 0.00000009\n",
      "Epoch: 15660/20000, Loss: 0.00000009\n",
      "Epoch: 15670/20000, Loss: 0.00000010\n",
      "Epoch: 15680/20000, Loss: 0.00000015\n",
      "Epoch: 15690/20000, Loss: 0.00000010\n",
      "Epoch: 15700/20000, Loss: 0.00000008\n",
      "Epoch: 15710/20000, Loss: 0.00000008\n",
      "Epoch: 15720/20000, Loss: 0.00000008\n",
      "Epoch: 15730/20000, Loss: 0.00000008\n",
      "Epoch: 15740/20000, Loss: 0.00000008\n",
      "Epoch: 15750/20000, Loss: 0.00000008\n",
      "Epoch: 15760/20000, Loss: 0.00000008\n",
      "Epoch: 15770/20000, Loss: 0.00000008\n",
      "Epoch: 15780/20000, Loss: 0.00000008\n",
      "Epoch: 15790/20000, Loss: 0.00000008\n",
      "Epoch: 15800/20000, Loss: 0.00000017\n",
      "Epoch: 15810/20000, Loss: 0.00000015\n",
      "Epoch: 15820/20000, Loss: 0.00000012\n",
      "Epoch: 15830/20000, Loss: 0.00000010\n",
      "Epoch: 15840/20000, Loss: 0.00000008\n",
      "Epoch: 15850/20000, Loss: 0.00000008\n",
      "Epoch: 15860/20000, Loss: 0.00000008\n",
      "Epoch: 15870/20000, Loss: 0.00000008\n",
      "Epoch: 15880/20000, Loss: 0.00000008\n",
      "Epoch: 15890/20000, Loss: 0.00000008\n",
      "Epoch: 15900/20000, Loss: 0.00000008\n",
      "Epoch: 15910/20000, Loss: 0.00000010\n",
      "Epoch: 15920/20000, Loss: 0.00000010\n",
      "Epoch: 15930/20000, Loss: 0.00000008\n",
      "Epoch: 15940/20000, Loss: 0.00000008\n",
      "Epoch: 15950/20000, Loss: 0.00000008\n",
      "Epoch: 15960/20000, Loss: 0.00000008\n",
      "Epoch: 15970/20000, Loss: 0.00000008\n",
      "Epoch: 15980/20000, Loss: 0.00000008\n",
      "Epoch: 15990/20000, Loss: 0.00000008\n",
      "Epoch: 16000/20000, Loss: 0.00000007\n",
      "Epoch: 16010/20000, Loss: 0.00000007\n",
      "Epoch: 16020/20000, Loss: 0.00000008\n",
      "Epoch: 16030/20000, Loss: 0.00000020\n",
      "Epoch: 16040/20000, Loss: 0.00000010\n",
      "Epoch: 16050/20000, Loss: 0.00000012\n",
      "Epoch: 16060/20000, Loss: 0.00000008\n",
      "Epoch: 16070/20000, Loss: 0.00000007\n",
      "Epoch: 16080/20000, Loss: 0.00000007\n",
      "Epoch: 16090/20000, Loss: 0.00000007\n",
      "Epoch: 16100/20000, Loss: 0.00000007\n",
      "Epoch: 16110/20000, Loss: 0.00000007\n",
      "Epoch: 16120/20000, Loss: 0.00000007\n",
      "Epoch: 16130/20000, Loss: 0.00000008\n",
      "Epoch: 16140/20000, Loss: 0.00000014\n",
      "Epoch: 16150/20000, Loss: 0.00000009\n",
      "Epoch: 16160/20000, Loss: 0.00000008\n",
      "Epoch: 16170/20000, Loss: 0.00000007\n",
      "Epoch: 16180/20000, Loss: 0.00000007\n",
      "Epoch: 16190/20000, Loss: 0.00000007\n",
      "Epoch: 16200/20000, Loss: 0.00000007\n",
      "Epoch: 16210/20000, Loss: 0.00000008\n",
      "Epoch: 16220/20000, Loss: 0.00000016\n",
      "Epoch: 16230/20000, Loss: 0.00000008\n",
      "Epoch: 16240/20000, Loss: 0.00000007\n",
      "Epoch: 16250/20000, Loss: 0.00000007\n",
      "Epoch: 16260/20000, Loss: 0.00000007\n",
      "Epoch: 16270/20000, Loss: 0.00000009\n",
      "Epoch: 16280/20000, Loss: 0.00000008\n",
      "Epoch: 16290/20000, Loss: 0.00000007\n",
      "Epoch: 16300/20000, Loss: 0.00000007\n",
      "Epoch: 16310/20000, Loss: 0.00000007\n",
      "Epoch: 16320/20000, Loss: 0.00000007\n",
      "Epoch: 16330/20000, Loss: 0.00000007\n",
      "Epoch: 16340/20000, Loss: 0.00000007\n",
      "Epoch: 16350/20000, Loss: 0.00000007\n",
      "Epoch: 16360/20000, Loss: 0.00000007\n",
      "Epoch: 16370/20000, Loss: 0.00000007\n",
      "Epoch: 16380/20000, Loss: 0.00000007\n",
      "Epoch: 16390/20000, Loss: 0.00000018\n",
      "Epoch: 16400/20000, Loss: 0.00000011\n",
      "Epoch: 16410/20000, Loss: 0.00000008\n",
      "Epoch: 16420/20000, Loss: 0.00000008\n",
      "Epoch: 16430/20000, Loss: 0.00000009\n",
      "Epoch: 16440/20000, Loss: 0.00000007\n",
      "Epoch: 16450/20000, Loss: 0.00000007\n",
      "Epoch: 16460/20000, Loss: 0.00000006\n",
      "Epoch: 16470/20000, Loss: 0.00000007\n",
      "Epoch: 16480/20000, Loss: 0.00000007\n",
      "Epoch: 16490/20000, Loss: 0.00000008\n",
      "Epoch: 16500/20000, Loss: 0.00000008\n",
      "Epoch: 16510/20000, Loss: 0.00000007\n",
      "Epoch: 16520/20000, Loss: 0.00000006\n",
      "Epoch: 16530/20000, Loss: 0.00000006\n",
      "Epoch: 16540/20000, Loss: 0.00000006\n",
      "Epoch: 16550/20000, Loss: 0.00000008\n",
      "Epoch: 16560/20000, Loss: 0.00000012\n",
      "Epoch: 16570/20000, Loss: 0.00000009\n",
      "Epoch: 16580/20000, Loss: 0.00000012\n",
      "Epoch: 16590/20000, Loss: 0.00000008\n",
      "Epoch: 16600/20000, Loss: 0.00000007\n",
      "Epoch: 16610/20000, Loss: 0.00000006\n",
      "Epoch: 16620/20000, Loss: 0.00000006\n",
      "Epoch: 16630/20000, Loss: 0.00000006\n",
      "Epoch: 16640/20000, Loss: 0.00000006\n",
      "Epoch: 16650/20000, Loss: 0.00000006\n",
      "Epoch: 16660/20000, Loss: 0.00000006\n",
      "Epoch: 16670/20000, Loss: 0.00000007\n",
      "Epoch: 16680/20000, Loss: 0.00000014\n",
      "Epoch: 16690/20000, Loss: 0.00000011\n",
      "Epoch: 16700/20000, Loss: 0.00000009\n",
      "Epoch: 16710/20000, Loss: 0.00000007\n",
      "Epoch: 16720/20000, Loss: 0.00000006\n",
      "Epoch: 16730/20000, Loss: 0.00000006\n",
      "Epoch: 16740/20000, Loss: 0.00000006\n",
      "Epoch: 16750/20000, Loss: 0.00000006\n",
      "Epoch: 16760/20000, Loss: 0.00000006\n",
      "Epoch: 16770/20000, Loss: 0.00000006\n",
      "Epoch: 16780/20000, Loss: 0.00000006\n",
      "Epoch: 16790/20000, Loss: 0.00000006\n",
      "Epoch: 16800/20000, Loss: 0.00000006\n",
      "Epoch: 16810/20000, Loss: 0.00000007\n",
      "Epoch: 16820/20000, Loss: 0.00000027\n",
      "Epoch: 16830/20000, Loss: 0.00000011\n",
      "Epoch: 16840/20000, Loss: 0.00000007\n",
      "Epoch: 16850/20000, Loss: 0.00000006\n",
      "Epoch: 16860/20000, Loss: 0.00000006\n",
      "Epoch: 16870/20000, Loss: 0.00000006\n",
      "Epoch: 16880/20000, Loss: 0.00000006\n",
      "Epoch: 16890/20000, Loss: 0.00000006\n",
      "Epoch: 16900/20000, Loss: 0.00000006\n",
      "Epoch: 16910/20000, Loss: 0.00000006\n",
      "Epoch: 16920/20000, Loss: 0.00000006\n",
      "Epoch: 16930/20000, Loss: 0.00000007\n",
      "Epoch: 16940/20000, Loss: 0.00000012\n",
      "Epoch: 16950/20000, Loss: 0.00000006\n",
      "Epoch: 16960/20000, Loss: 0.00000006\n",
      "Epoch: 16970/20000, Loss: 0.00000006\n",
      "Epoch: 16980/20000, Loss: 0.00000006\n",
      "Epoch: 16990/20000, Loss: 0.00000006\n",
      "Epoch: 17000/20000, Loss: 0.00000005\n",
      "Epoch: 17010/20000, Loss: 0.00000006\n",
      "Epoch: 17020/20000, Loss: 0.00000006\n",
      "Epoch: 17030/20000, Loss: 0.00000013\n",
      "Epoch: 17040/20000, Loss: 0.00000007\n",
      "Epoch: 17050/20000, Loss: 0.00000006\n",
      "Epoch: 17060/20000, Loss: 0.00000006\n",
      "Epoch: 17070/20000, Loss: 0.00000006\n",
      "Epoch: 17080/20000, Loss: 0.00000005\n",
      "Epoch: 17090/20000, Loss: 0.00000006\n",
      "Epoch: 17100/20000, Loss: 0.00000012\n",
      "Epoch: 17110/20000, Loss: 0.00000006\n",
      "Epoch: 17120/20000, Loss: 0.00000006\n",
      "Epoch: 17130/20000, Loss: 0.00000005\n",
      "Epoch: 17140/20000, Loss: 0.00000005\n",
      "Epoch: 17150/20000, Loss: 0.00000005\n",
      "Epoch: 17160/20000, Loss: 0.00000005\n",
      "Epoch: 17170/20000, Loss: 0.00000010\n",
      "Epoch: 17180/20000, Loss: 0.00000006\n",
      "Epoch: 17190/20000, Loss: 0.00000008\n",
      "Epoch: 17200/20000, Loss: 0.00000005\n",
      "Epoch: 17210/20000, Loss: 0.00000006\n",
      "Epoch: 17220/20000, Loss: 0.00000005\n",
      "Epoch: 17230/20000, Loss: 0.00000007\n",
      "Epoch: 17240/20000, Loss: 0.00000010\n",
      "Epoch: 17250/20000, Loss: 0.00000006\n",
      "Epoch: 17260/20000, Loss: 0.00000005\n",
      "Epoch: 17270/20000, Loss: 0.00000005\n",
      "Epoch: 17280/20000, Loss: 0.00000005\n",
      "Epoch: 17290/20000, Loss: 0.00000005\n",
      "Epoch: 17300/20000, Loss: 0.00000005\n",
      "Epoch: 17310/20000, Loss: 0.00000005\n",
      "Epoch: 17320/20000, Loss: 0.00000005\n",
      "Epoch: 17330/20000, Loss: 0.00000005\n",
      "Epoch: 17340/20000, Loss: 0.00000005\n",
      "Epoch: 17350/20000, Loss: 0.00000005\n",
      "Epoch: 17360/20000, Loss: 0.00000005\n",
      "Epoch: 17370/20000, Loss: 0.00000007\n",
      "Epoch: 17380/20000, Loss: 0.00000009\n",
      "Epoch: 17390/20000, Loss: 0.00000012\n",
      "Epoch: 17400/20000, Loss: 0.00000007\n",
      "Epoch: 17410/20000, Loss: 0.00000006\n",
      "Epoch: 17420/20000, Loss: 0.00000005\n",
      "Epoch: 17430/20000, Loss: 0.00000005\n",
      "Epoch: 17440/20000, Loss: 0.00000005\n",
      "Epoch: 17450/20000, Loss: 0.00000005\n",
      "Epoch: 17460/20000, Loss: 0.00000005\n",
      "Epoch: 17470/20000, Loss: 0.00000005\n",
      "Epoch: 17480/20000, Loss: 0.00000005\n",
      "Epoch: 17490/20000, Loss: 0.00000005\n",
      "Epoch: 17500/20000, Loss: 0.00000009\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 17510/20000, Loss: 0.00000005\n",
      "Epoch: 17520/20000, Loss: 0.00000007\n",
      "Epoch: 17530/20000, Loss: 0.00000005\n",
      "Epoch: 17540/20000, Loss: 0.00000005\n",
      "Epoch: 17550/20000, Loss: 0.00000005\n",
      "Epoch: 17560/20000, Loss: 0.00000005\n",
      "Epoch: 17570/20000, Loss: 0.00000005\n",
      "Epoch: 17580/20000, Loss: 0.00000005\n",
      "Epoch: 17590/20000, Loss: 0.00000005\n",
      "Epoch: 17600/20000, Loss: 0.00000007\n",
      "Epoch: 17610/20000, Loss: 0.00000007\n",
      "Epoch: 17620/20000, Loss: 0.00000007\n",
      "Epoch: 17630/20000, Loss: 0.00000005\n",
      "Epoch: 17640/20000, Loss: 0.00000005\n",
      "Epoch: 17650/20000, Loss: 0.00000005\n",
      "Epoch: 17660/20000, Loss: 0.00000005\n",
      "Epoch: 17670/20000, Loss: 0.00000005\n",
      "Epoch: 17680/20000, Loss: 0.00000005\n",
      "Epoch: 17690/20000, Loss: 0.00000008\n",
      "Epoch: 17700/20000, Loss: 0.00000006\n",
      "Epoch: 17710/20000, Loss: 0.00000005\n",
      "Epoch: 17720/20000, Loss: 0.00000005\n",
      "Epoch: 17730/20000, Loss: 0.00000005\n",
      "Epoch: 17740/20000, Loss: 0.00000005\n",
      "Epoch: 17750/20000, Loss: 0.00000005\n",
      "Epoch: 17760/20000, Loss: 0.00000005\n",
      "Epoch: 17770/20000, Loss: 0.00000005\n",
      "Epoch: 17780/20000, Loss: 0.00000004\n",
      "Epoch: 17790/20000, Loss: 0.00000004\n",
      "Epoch: 17800/20000, Loss: 0.00000005\n",
      "Epoch: 17810/20000, Loss: 0.00000007\n",
      "Epoch: 17820/20000, Loss: 0.00000007\n",
      "Epoch: 17830/20000, Loss: 0.00000008\n",
      "Epoch: 17840/20000, Loss: 0.00000005\n",
      "Epoch: 17850/20000, Loss: 0.00000005\n",
      "Epoch: 17860/20000, Loss: 0.00000005\n",
      "Epoch: 17870/20000, Loss: 0.00000008\n",
      "Epoch: 17880/20000, Loss: 0.00000005\n",
      "Epoch: 17890/20000, Loss: 0.00000005\n",
      "Epoch: 17900/20000, Loss: 0.00000005\n",
      "Epoch: 17910/20000, Loss: 0.00000004\n",
      "Epoch: 17920/20000, Loss: 0.00000004\n",
      "Epoch: 17930/20000, Loss: 0.00000004\n",
      "Epoch: 17940/20000, Loss: 0.00000004\n",
      "Epoch: 17950/20000, Loss: 0.00000004\n",
      "Epoch: 17960/20000, Loss: 0.00000006\n",
      "Epoch: 17970/20000, Loss: 0.00000011\n",
      "Epoch: 17980/20000, Loss: 0.00000006\n",
      "Epoch: 17990/20000, Loss: 0.00000005\n",
      "Epoch: 18000/20000, Loss: 0.00000005\n",
      "Epoch: 18010/20000, Loss: 0.00000005\n",
      "Epoch: 18020/20000, Loss: 0.00000008\n",
      "Epoch: 18030/20000, Loss: 0.00000005\n",
      "Epoch: 18040/20000, Loss: 0.00000005\n",
      "Epoch: 18050/20000, Loss: 0.00000005\n",
      "Epoch: 18060/20000, Loss: 0.00000004\n",
      "Epoch: 18070/20000, Loss: 0.00000004\n",
      "Epoch: 18080/20000, Loss: 0.00000005\n",
      "Epoch: 18090/20000, Loss: 0.00000011\n",
      "Epoch: 18100/20000, Loss: 0.00000006\n",
      "Epoch: 18110/20000, Loss: 0.00000006\n",
      "Epoch: 18120/20000, Loss: 0.00000005\n",
      "Epoch: 18130/20000, Loss: 0.00000004\n",
      "Epoch: 18140/20000, Loss: 0.00000004\n",
      "Epoch: 18150/20000, Loss: 0.00000004\n",
      "Epoch: 18160/20000, Loss: 0.00000008\n",
      "Epoch: 18170/20000, Loss: 0.00000005\n",
      "Epoch: 18180/20000, Loss: 0.00000006\n",
      "Epoch: 18190/20000, Loss: 0.00000005\n",
      "Epoch: 18200/20000, Loss: 0.00000004\n",
      "Epoch: 18210/20000, Loss: 0.00000004\n",
      "Epoch: 18220/20000, Loss: 0.00000004\n",
      "Epoch: 18230/20000, Loss: 0.00000004\n",
      "Epoch: 18240/20000, Loss: 0.00000004\n",
      "Epoch: 18250/20000, Loss: 0.00000006\n",
      "Epoch: 18260/20000, Loss: 0.00000015\n",
      "Epoch: 18270/20000, Loss: 0.00000004\n",
      "Epoch: 18280/20000, Loss: 0.00000006\n",
      "Epoch: 18290/20000, Loss: 0.00000004\n",
      "Epoch: 18300/20000, Loss: 0.00000004\n",
      "Epoch: 18310/20000, Loss: 0.00000004\n",
      "Epoch: 18320/20000, Loss: 0.00000004\n",
      "Epoch: 18330/20000, Loss: 0.00000004\n",
      "Epoch: 18340/20000, Loss: 0.00000004\n",
      "Epoch: 18350/20000, Loss: 0.00000004\n",
      "Epoch: 18360/20000, Loss: 0.00000008\n",
      "Epoch: 18370/20000, Loss: 0.00000004\n",
      "Epoch: 18380/20000, Loss: 0.00000005\n",
      "Epoch: 18390/20000, Loss: 0.00000005\n",
      "Epoch: 18400/20000, Loss: 0.00000004\n",
      "Epoch: 18410/20000, Loss: 0.00000004\n",
      "Epoch: 18420/20000, Loss: 0.00000004\n",
      "Epoch: 18430/20000, Loss: 0.00000004\n",
      "Epoch: 18440/20000, Loss: 0.00000004\n",
      "Epoch: 18450/20000, Loss: 0.00000004\n",
      "Epoch: 18460/20000, Loss: 0.00000004\n",
      "Epoch: 18470/20000, Loss: 0.00000010\n",
      "Epoch: 18480/20000, Loss: 0.00000005\n",
      "Epoch: 18490/20000, Loss: 0.00000007\n",
      "Epoch: 18500/20000, Loss: 0.00000004\n",
      "Epoch: 18510/20000, Loss: 0.00000004\n",
      "Epoch: 18520/20000, Loss: 0.00000004\n",
      "Epoch: 18530/20000, Loss: 0.00000004\n",
      "Epoch: 18540/20000, Loss: 0.00000007\n",
      "Epoch: 18550/20000, Loss: 0.00000005\n",
      "Epoch: 18560/20000, Loss: 0.00000004\n",
      "Epoch: 18570/20000, Loss: 0.00000004\n",
      "Epoch: 18580/20000, Loss: 0.00000004\n",
      "Epoch: 18590/20000, Loss: 0.00000004\n",
      "Epoch: 18600/20000, Loss: 0.00000004\n",
      "Epoch: 18610/20000, Loss: 0.00000004\n",
      "Epoch: 18620/20000, Loss: 0.00000004\n",
      "Epoch: 18630/20000, Loss: 0.00000004\n",
      "Epoch: 18640/20000, Loss: 0.00000004\n",
      "Epoch: 18650/20000, Loss: 0.00000005\n",
      "Epoch: 18660/20000, Loss: 0.00000018\n",
      "Epoch: 18670/20000, Loss: 0.00000010\n",
      "Epoch: 18680/20000, Loss: 0.00000005\n",
      "Epoch: 18690/20000, Loss: 0.00000005\n",
      "Epoch: 18700/20000, Loss: 0.00000004\n",
      "Epoch: 18710/20000, Loss: 0.00000004\n",
      "Epoch: 18720/20000, Loss: 0.00000004\n",
      "Epoch: 18730/20000, Loss: 0.00000004\n",
      "Epoch: 18740/20000, Loss: 0.00000004\n",
      "Epoch: 18750/20000, Loss: 0.00000004\n",
      "Epoch: 18760/20000, Loss: 0.00000004\n",
      "Epoch: 18770/20000, Loss: 0.00000004\n",
      "Epoch: 18780/20000, Loss: 0.00000013\n",
      "Epoch: 18790/20000, Loss: 0.00000007\n",
      "Epoch: 18800/20000, Loss: 0.00000005\n",
      "Epoch: 18810/20000, Loss: 0.00000004\n",
      "Epoch: 18820/20000, Loss: 0.00000004\n",
      "Epoch: 18830/20000, Loss: 0.00000004\n",
      "Epoch: 18840/20000, Loss: 0.00000004\n",
      "Epoch: 18850/20000, Loss: 0.00000010\n",
      "Epoch: 18860/20000, Loss: 0.00000004\n",
      "Epoch: 18870/20000, Loss: 0.00000004\n",
      "Epoch: 18880/20000, Loss: 0.00000004\n",
      "Epoch: 18890/20000, Loss: 0.00000004\n",
      "Epoch: 18900/20000, Loss: 0.00000004\n",
      "Epoch: 18910/20000, Loss: 0.00000004\n",
      "Epoch: 18920/20000, Loss: 0.00000004\n",
      "Epoch: 18930/20000, Loss: 0.00000004\n",
      "Epoch: 18940/20000, Loss: 0.00000004\n",
      "Epoch: 18950/20000, Loss: 0.00000017\n",
      "Epoch: 18960/20000, Loss: 0.00000012\n",
      "Epoch: 18970/20000, Loss: 0.00000004\n",
      "Epoch: 18980/20000, Loss: 0.00000005\n",
      "Epoch: 18990/20000, Loss: 0.00000004\n",
      "Epoch: 19000/20000, Loss: 0.00000004\n",
      "Epoch: 19010/20000, Loss: 0.00000004\n",
      "Epoch: 19020/20000, Loss: 0.00000003\n",
      "Epoch: 19030/20000, Loss: 0.00000004\n",
      "Epoch: 19040/20000, Loss: 0.00000020\n",
      "Epoch: 19050/20000, Loss: 0.00000007\n",
      "Epoch: 19060/20000, Loss: 0.00000004\n",
      "Epoch: 19070/20000, Loss: 0.00000004\n",
      "Epoch: 19080/20000, Loss: 0.00000003\n",
      "Epoch: 19090/20000, Loss: 0.00000004\n",
      "Epoch: 19100/20000, Loss: 0.00000003\n",
      "Epoch: 19110/20000, Loss: 0.00000003\n",
      "Epoch: 19120/20000, Loss: 0.00000003\n",
      "Epoch: 19130/20000, Loss: 0.00000003\n",
      "Epoch: 19140/20000, Loss: 0.00000003\n",
      "Epoch: 19150/20000, Loss: 0.00000003\n",
      "Epoch: 19160/20000, Loss: 0.00000005\n",
      "Epoch: 19170/20000, Loss: 0.00000018\n",
      "Epoch: 19180/20000, Loss: 0.00000004\n",
      "Epoch: 19190/20000, Loss: 0.00000005\n",
      "Epoch: 19200/20000, Loss: 0.00000004\n",
      "Epoch: 19210/20000, Loss: 0.00000003\n",
      "Epoch: 19220/20000, Loss: 0.00000003\n",
      "Epoch: 19230/20000, Loss: 0.00000003\n",
      "Epoch: 19240/20000, Loss: 0.00000004\n",
      "Epoch: 19250/20000, Loss: 0.00000014\n",
      "Epoch: 19260/20000, Loss: 0.00000007\n",
      "Epoch: 19270/20000, Loss: 0.00000005\n",
      "Epoch: 19280/20000, Loss: 0.00000003\n",
      "Epoch: 19290/20000, Loss: 0.00000003\n",
      "Epoch: 19300/20000, Loss: 0.00000003\n",
      "Epoch: 19310/20000, Loss: 0.00000003\n",
      "Epoch: 19320/20000, Loss: 0.00000003\n",
      "Epoch: 19330/20000, Loss: 0.00000003\n",
      "Epoch: 19340/20000, Loss: 0.00000003\n",
      "Epoch: 19350/20000, Loss: 0.00000003\n",
      "Epoch: 19360/20000, Loss: 0.00000003\n",
      "Epoch: 19370/20000, Loss: 0.00000011\n",
      "Epoch: 19380/20000, Loss: 0.00000006\n",
      "Epoch: 19390/20000, Loss: 0.00000006\n",
      "Epoch: 19400/20000, Loss: 0.00000004\n",
      "Epoch: 19410/20000, Loss: 0.00000004\n",
      "Epoch: 19420/20000, Loss: 0.00000004\n",
      "Epoch: 19430/20000, Loss: 0.00000005\n",
      "Epoch: 19440/20000, Loss: 0.00000007\n",
      "Epoch: 19450/20000, Loss: 0.00000004\n",
      "Epoch: 19460/20000, Loss: 0.00000003\n",
      "Epoch: 19470/20000, Loss: 0.00000003\n",
      "Epoch: 19480/20000, Loss: 0.00000003\n",
      "Epoch: 19490/20000, Loss: 0.00000003\n",
      "Epoch: 19500/20000, Loss: 0.00000003\n",
      "Epoch: 19510/20000, Loss: 0.00000005\n",
      "Epoch: 19520/20000, Loss: 0.00000008\n",
      "Epoch: 19530/20000, Loss: 0.00000005\n",
      "Epoch: 19540/20000, Loss: 0.00000004\n",
      "Epoch: 19550/20000, Loss: 0.00000004\n",
      "Epoch: 19560/20000, Loss: 0.00000004\n",
      "Epoch: 19570/20000, Loss: 0.00000006\n",
      "Epoch: 19580/20000, Loss: 0.00000003\n",
      "Epoch: 19590/20000, Loss: 0.00000004\n",
      "Epoch: 19600/20000, Loss: 0.00000003\n",
      "Epoch: 19610/20000, Loss: 0.00000004\n",
      "Epoch: 19620/20000, Loss: 0.00000008\n",
      "Epoch: 19630/20000, Loss: 0.00000003\n",
      "Epoch: 19640/20000, Loss: 0.00000004\n",
      "Epoch: 19650/20000, Loss: 0.00000013\n",
      "Epoch: 19660/20000, Loss: 0.00000006\n",
      "Epoch: 19670/20000, Loss: 0.00000005\n",
      "Epoch: 19680/20000, Loss: 0.00000004\n",
      "Epoch: 19690/20000, Loss: 0.00000003\n",
      "Epoch: 19700/20000, Loss: 0.00000003\n",
      "Epoch: 19710/20000, Loss: 0.00000003\n",
      "Epoch: 19720/20000, Loss: 0.00000004\n",
      "Epoch: 19730/20000, Loss: 0.00000011\n",
      "Epoch: 19740/20000, Loss: 0.00000005\n",
      "Epoch: 19750/20000, Loss: 0.00000004\n",
      "Epoch: 19760/20000, Loss: 0.00000004\n",
      "Epoch: 19770/20000, Loss: 0.00000003\n",
      "Epoch: 19780/20000, Loss: 0.00000003\n",
      "Epoch: 19790/20000, Loss: 0.00000003\n",
      "Epoch: 19800/20000, Loss: 0.00000003\n",
      "Epoch: 19810/20000, Loss: 0.00000006\n",
      "Epoch: 19820/20000, Loss: 0.00000006\n",
      "Epoch: 19830/20000, Loss: 0.00000003\n",
      "Epoch: 19840/20000, Loss: 0.00000004\n",
      "Epoch: 19850/20000, Loss: 0.00000003\n",
      "Epoch: 19860/20000, Loss: 0.00000003\n",
      "Epoch: 19870/20000, Loss: 0.00000004\n",
      "Epoch: 19880/20000, Loss: 0.00000010\n",
      "Epoch: 19890/20000, Loss: 0.00000005\n",
      "Epoch: 19900/20000, Loss: 0.00000004\n",
      "Epoch: 19910/20000, Loss: 0.00000003\n",
      "Epoch: 19920/20000, Loss: 0.00000003\n",
      "Epoch: 19930/20000, Loss: 0.00000003\n",
      "Epoch: 19940/20000, Loss: 0.00000003\n",
      "Epoch: 19950/20000, Loss: 0.00000003\n",
      "Epoch: 19960/20000, Loss: 0.00000003\n",
      "Epoch: 19970/20000, Loss: 0.00000003\n",
      "Epoch: 19980/20000, Loss: 0.00000004\n",
      "Epoch: 19990/20000, Loss: 0.00000016\n",
      "Epoch: 20000/20000, Loss: 0.00000008\n",
      "torch.Size([1, 256])\n",
      "torch.Size([256])\n"
     ]
    }
   ],
   "source": [
    "# Toy problem data\n",
    "input_size = 256\n",
    "hidden_size = 32\n",
    "output_size = 256\n",
    "sequence_length = 79\n",
    "batch_size = 1\n",
    "num_epochs = 20000\n",
    "\n",
    "\n",
    "# Set random seed for reproducibility\n",
    "torch.manual_seed(42)\n",
    "\n",
    "\n",
    "\n",
    "input_data = u[:,0:79]\n",
    "target_data = u[:,1:80]\n",
    "\n",
    "test_data = u[:,79]\n",
    "#test_target = u[:,80:100]\n",
    "\n",
    "\n",
    "# Convert data to tensors\n",
    "input_tensor = torch.tensor(input_data.T).view(batch_size, sequence_length, input_size).float()\n",
    "target_tensor = torch.tensor(target_data.T).view(batch_size, sequence_length, output_size).float()\n",
    "\n",
    "# Convert test data to tensors\n",
    "test_tensor = torch.tensor(test_data.T).view(batch_size, 1, input_size).float()\n",
    "#test_target_tensor = torch.tensor(test_target.T).view(batch_size, 20, output_size).float()\n",
    "\n",
    "# Create coRNN instance\n",
    "cornn = coRNN(input_size, hidden_size, output_size, dt=0.1, gamma=1.0, epsilon=0.01)\n",
    "\n",
    "# Loss and optimizer\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(cornn.parameters(), lr=0.001)\n",
    "\n",
    "# Training loop\n",
    "for epoch in range(num_epochs):\n",
    "    # Forward pass\n",
    "    output = cornn(input_tensor)\n",
    "    loss = criterion(output, target_tensor)\n",
    "\n",
    "    # Backward and optimize\n",
    "    optimizer.zero_grad()\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "\n",
    "    # Print progress\n",
    "    if (epoch+1) % 10 == 0:\n",
    "        print(f'Epoch: {epoch+1}/{num_epochs}, Loss: {loss.item():.8f}')\n",
    "\n",
    "\n",
    "with torch.no_grad():\n",
    "    prediction = cornn(test_tensor)\n",
    "\n",
    "print(prediction.shape)\n",
    "\n",
    "final_time_output = prediction[-1, :]\n",
    "print(final_time_output.shape)\n",
    "\n",
    "final_out = final_time_output.detach().numpy().reshape(-1,1)\n",
    "final_true = u[:,-1].reshape(-1,1)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "4ac1a804",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 1, 256])\n",
      "torch.Size([1, 20, 256])\n"
     ]
    }
   ],
   "source": [
    "print(test_tensor.shape)\n",
    "prediction_tensor = torch.zeros(1, 20, 256).float()\n",
    "print(prediction_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e73b12e7",
   "metadata": {},
   "outputs": [],
   "source": [
    "with torch.no_grad():\n",
    "    prediction = cornn(test_tensor)\n",
    "    prediction = prediction.view(1, 1, 256).float()\n",
    "    prediction_tensor[:, 0, :] = prediction\n",
    "    for i in range(19):\n",
    "        prediction = cornn(prediction)\n",
    "        prediction = prediction.view(1, 1, 256).float()\n",
    "        prediction_tensor[:, i+1, :] = prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "68cf2f04",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Exact Solution\n",
    "\n",
    "u_test = u_1.T\n",
    "u_test_full = u_test[80:100, :]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "cd70c84b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1, 1, 256])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prediction.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "57a01be1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20, 256)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u_test_full.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65936417",
   "metadata": {},
   "source": [
    "### L2 norm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "e92b5fe2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([20, 256])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Extrapolation\n",
    "\n",
    "k1 = ( prediction_tensor - u_test_full)**2\n",
    "u_test_full_tensor = torch.tensor(u_test_full**2)\n",
    "u_test_full_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "9a5129a9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Relative Error Test:  0.004497675536276817 %\n"
     ]
    }
   ],
   "source": [
    "# Compute the relative L2 error norm (generalization error)\n",
    "relative_error_test = torch.mean(k1)/ torch.mean(u_test_full_tensor)\n",
    "\n",
    "print(\"Relative Error Test: \", relative_error_test.item(), \"%\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "60c30f0c",
   "metadata": {},
   "source": [
    "### Max absolute error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "e5652aca",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.1035, dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "R_abs = torch.max(torch.abs(prediction_tensor - u_test_full))\n",
    "print(R_abs)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f58215d9",
   "metadata": {},
   "source": [
    "### Explained variance score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "744fa133",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Explained Variance Score: 0.9955023254072071\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_26645/2104891356.py:7: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  a = torch.tensor(a)\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "\n",
    "a = prediction_tensor\n",
    "b = u_test_full\n",
    "# Assuming 'a' is your predicted values (model's predictions) and 'b' is the true values (ground truth)\n",
    "# Make sure 'a' and 'b' are PyTorch tensors\n",
    "a = torch.tensor(a)\n",
    "b = torch.tensor(b)\n",
    "# Calculate the mean of 'b'\n",
    "mean_b = torch.mean(b)\n",
    "\n",
    "# Calculate the Explained Variance Score\n",
    "numerator = torch.var(b - a)  # Variance of the differences between 'b' and 'a'\n",
    "denominator = torch.var(b)    # Variance of 'b'\n",
    "evs = 1 - numerator / denominator\n",
    "\n",
    "print(\"Explained Variance Score:\", evs.item())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ed83c989",
   "metadata": {},
   "source": [
    "### Mean absolute error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "8e3cf699",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Relative Error Test:  tensor(0.0222, dtype=torch.float64) %\n"
     ]
    }
   ],
   "source": [
    "# Compute the relative L2 error norm (generalization error)\n",
    "relative_error_test = torch.mean(torch.abs(prediction_tensor - u_test_full))\n",
    "\n",
    "print(\"Relative Error Test: \", relative_error_test, \"%\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "05bca726",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 20, 256])\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "torch.Size([20, 256])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(prediction_tensor.shape)\n",
    "prediction_tensor = torch.squeeze(prediction_tensor)\n",
    "prediction_tensor.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8d74b054",
   "metadata": {},
   "source": [
    "### Ploting at snapshot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "df4a0a6e",
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams['figure.figsize'] = [10, 4]\n",
    "\n",
    "from matplotlib.font_manager import FontProperties\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "font_path = 'times-new-roman.ttf'\n",
    "custom_font = FontProperties(fname=font_path)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "aaedd699",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "final_time_output = prediction_tensor[3, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = u_1[:, 83].reshape(-1, 1)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${u(x, t)}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 0.83}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-1, 0, 1])\n",
    "ax.set_yticks([-1, 0, 1])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('coRNN_0.83_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "#plt.savefig('lem_0.83_20.png', dpi=500, bbox_inches=\"tight\")\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "68dfda35",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "\n",
    "\n",
    "final_time_output = prediction_tensor[-2, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = u_1[:, -2].reshape(-1, 1)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${u(x, t)}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 0.98}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-1, 0, 1])\n",
    "ax.set_yticks([-1, 0, 1])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('coRNN_0.98_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "#plt.savefig('lem_0.98_20.png', dpi=500, bbox_inches=\"tight\")\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "03b9675c",
   "metadata": {},
   "source": [
    "### contour plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "2cd3dc82",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 79, 256])\n"
     ]
    }
   ],
   "source": [
    "print(input_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "4ca1486a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([20, 256])\n"
     ]
    }
   ],
   "source": [
    "print(prediction_tensor.shape)\n",
    "prediction_tensor = torch.squeeze(prediction_tensor)\n",
    "input_tensor = torch.squeeze(input_tensor)\n",
    "\n",
    "conc_u = torch.squeeze(input_tensor)\n",
    "concatenated_tensor = torch.cat((conc_u, prediction_tensor), dim=0)\n",
    "\n",
    "x1 = np.linspace(-1, 1, 256)\n",
    "t1 = np.linspace(0, 1, 99)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "318c8974",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import FixedLocator\n",
    "\n",
    "# Assuming you have defined concatenated_tensor as a PyTorch tensor\n",
    "# concatenated_tensor = torch.cat((tensor1, tensor2), dim=0)\n",
    "\n",
    "# Convert concatenated_tensor to a NumPy array\n",
    "concatenated_array = concatenated_tensor.numpy()\n",
    "\n",
    "# Define custom color levels\n",
    "x = np.linspace(-1, 1, concatenated_array.shape[1])  # Replace 0 and 1 with your actual x range\n",
    "t = np.linspace(0, 1, concatenated_array.shape[0])  # Replace 0 and 1 with your actual t range\n",
    "X, T = np.meshgrid(x, t1)\n",
    "\n",
    "# Define custom color levels using the minimum and maximum from the NumPy array\n",
    "c_levels = np.linspace(np.min(concatenated_array), np.max(concatenated_array), 400)\n",
    "\n",
    "# Plot the contour with interpolated data\n",
    "plt.figure(figsize=(20, 5))\n",
    "plt.pcolormesh(T, X, concatenated_array, shading='auto', cmap='coolwarm')\n",
    "\n",
    "# Set the fontweight for axis labels to regular (not bold)\n",
    "plt.xlabel(\"$t$\", fontsize=26)\n",
    "plt.ylabel(\"$x$\", fontsize=26)\n",
    "plt.title(\"$u(x, t)$\", fontsize=26)\n",
    "\n",
    "# Set tick labels fontweight to regular (not bold) and increase font size\n",
    "plt.tick_params(axis='both', which='major', labelsize=20, width=3, length=10)\n",
    "\n",
    "# Set the fontweight for tick labels to regular (not bold)\n",
    "for tick in plt.gca().get_xticklabels() + plt.gca().get_yticklabels():\n",
    "    tick.set_weight('normal')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 5\n",
    "num_ticks = 5\n",
    "x_ticks = np.linspace(np.min(T), np.max(T), num_ticks)\n",
    "y_ticks = np.linspace(np.min(X), np.max(X), num_ticks)\n",
    "\n",
    "plt.gca().xaxis.set_major_locator(FixedLocator(x_ticks))\n",
    "plt.gca().yaxis.set_major_locator(FixedLocator(y_ticks))\n",
    "\n",
    "cbar1 = plt.colorbar()\n",
    "# Set the number of ticks for the color bar with uniformly distributed numbers\n",
    "num_ticks = 5\n",
    "c_ticks = np.linspace(np.min(concatenated_array), np.max(concatenated_array), num_ticks)\n",
    "cbar1.set_ticks(c_ticks)\n",
    "\n",
    "# Set the fontweight and fontsize for color bar tick labels\n",
    "for t in cbar1.ax.get_yticklabels():\n",
    "    t.set_weight('normal')\n",
    "    t.set_fontsize(26)  # Increase the font size for color bar tick labels\n",
    "\n",
    "# Increase the size of numbers on axis and color bar\n",
    "plt.xticks(fontsize=26)\n",
    "plt.yticks(fontsize=26)\n",
    "\n",
    "# Increase the tick size and width of the color bar\n",
    "cbar1.ax.tick_params(axis='both', which='major', labelsize=30, width=3,  length=10)\n",
    "\n",
    "# Add a dotted line at t = 0.8\n",
    "plt.axvline(x=0.8, color='black', linestyle='dotted', linewidth=5)\n",
    "\n",
    "#plt.savefig('Contour_LEM_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "plt.savefig('contour_coRNN_20.jpeg', dpi=500, bbox_inches=\"tight\")\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c4df6dea",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "pytorch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
